rzk 0.7.7 → 0.8.0
raw patch · 151 files changed
+6521/−2990 lines, 151 filesdep ~aesondep ~filepathdep ~lspsetup-changed
Dependency ranges changed: aeson, filepath, lsp, yaml
Files
- ChangeLog.md +40/−5
- Setup.hs +10/−1
- app/Main.hs +7/−6
- grammar/Syntax.cf +47/−8
- rzk.cabal +143/−11
- src/Language/Rzk/Free/Syntax.hs +131/−16
- src/Language/Rzk/Syntax.hs +31/−29
- src/Language/Rzk/Syntax/Abs.hs +90/−4
- src/Language/Rzk/Syntax/Layout.hs +7/−7
- src/Language/Rzk/Syntax/Lex.hs +407/−354
- src/Language/Rzk/Syntax/Lex.x +88/−65
- src/Language/Rzk/Syntax/Par.hs +3052/−2248
- src/Language/Rzk/Syntax/Par.y +156/−80
- src/Language/Rzk/Syntax/Print.hs +38/−3
- src/Language/Rzk/VSCode/Handlers.hs +58/−30
- src/Language/Rzk/VSCode/Logging.hs +8/−8
- src/Language/Rzk/VSCode/Tokenize.hs +52/−7
- src/Rzk/Format.hs +158/−77
- src/Rzk/Main.hs +11/−9
- src/Rzk/TypeCheck.hs +561/−19
- test/Rzk/FormatSpec.hs +16/−3
- test/Rzk/TypeCheckSpec.hs +307/−0
- test/typecheck/SCHEMA.md +27/−0
- test/typecheck/cases/happy-check.expect.yaml +3/−0
- test/typecheck/cases/happy-check.rzk +7/−0
- test/typecheck/cases/happy-issue-9-relfunext2-id.expect.yaml +3/−0
- test/typecheck/cases/happy-issue-9-relfunext2-id.rzk +29/−0
- test/typecheck/cases/happy-modal-basics.expect.yaml +1/−0
- test/typecheck/cases/happy-modal-basics.rzk +65/−0
- test/typecheck/cases/happy-modal-inv.expect.yaml +1/−0
- test/typecheck/cases/happy-modal-inv.rzk +13/−0
- test/typecheck/cases/happy-refl-path.expect.yaml +3/−0
- test/typecheck/cases/happy-refl-path.rzk +7/−0
- test/typecheck/cases/happy-shott-simplicial-subcomplexes.expect.yaml +3/−0
- test/typecheck/cases/happy-shott-simplicial-subcomplexes.rzk +73/−0
- test/typecheck/cases/happy-tope-high-dim-cubes.expect.yaml +3/−0
- test/typecheck/cases/happy-tope-high-dim-cubes.rzk +60/−0
- test/typecheck/cases/happy-tope-nested-rec-or-d4.expect.yaml +3/−0
- test/typecheck/cases/happy-tope-nested-rec-or-d4.rzk +13/−0
- test/typecheck/cases/happy-tope-nested-rec-or-d5.expect.yaml +3/−0
- test/typecheck/cases/happy-tope-nested-rec-or-d5.rzk +14/−0
- test/typecheck/cases/happy-tope-nested-rec-or-d6.expect.yaml +3/−0
- test/typecheck/cases/happy-tope-nested-rec-or-d6.rzk +15/−0
- test/typecheck/cases/happy-tope-nested-rec-or.expect.yaml +3/−0
- test/typecheck/cases/happy-tope-nested-rec-or.rzk +13/−0
- test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml +5/−0
- test/typecheck/cases/happy-tope-rec-and-restrict.rzk +15/−0
- test/typecheck/cases/happy-tope-shapes.expect.yaml +3/−0
- test/typecheck/cases/happy-tope-shapes.rzk +26/−0
- test/typecheck/cases/ill-bare-lambda-compute.expect.yaml +6/−0
- test/typecheck/cases/ill-bare-lambda-compute.rzk +3/−0
- test/typecheck/cases/ill-bare-refl-compute.expect.yaml +6/−0
- test/typecheck/cases/ill-bare-refl-compute.rzk +3/−0
- test/typecheck/cases/ill-duplicate.expect.yaml +6/−0
- test/typecheck/cases/ill-duplicate.rzk +9/−0
- test/typecheck/cases/ill-implicit.expect.yaml +7/−0
- test/typecheck/cases/ill-implicit.rzk +11/−0
- test/typecheck/cases/ill-invalid-arg-type-bot.expect.yaml +6/−0
- test/typecheck/cases/ill-invalid-arg-type-bot.rzk +3/−0
- test/typecheck/cases/ill-issue-13-flip-flip-wrong.expect.yaml +6/−0
- test/typecheck/cases/ill-issue-13-flip-flip-wrong.rzk +10/−0
- test/typecheck/cases/ill-issue-206-families-of-extension.expect.yaml +7/−0
- test/typecheck/cases/ill-issue-206-families-of-extension.rzk +12/−0
- test/typecheck/cases/ill-issue-33-restriction-coherence.expect.yaml +7/−0
- test/typecheck/cases/ill-issue-33-restriction-coherence.rzk +15/−0
- test/typecheck/cases/ill-modal-b-no-dist.expect.yaml +4/−0
- test/typecheck/cases/ill-modal-b-no-dist.rzk +11/−0
- test/typecheck/cases/ill-modal-not-modal.expect.yaml +4/−0
- test/typecheck/cases/ill-modal-not-modal.rzk +8/−0
- test/typecheck/cases/ill-modal-op-unaccessible.expect.yaml +4/−0
- test/typecheck/cases/ill-modal-op-unaccessible.rzk +5/−0
- test/typecheck/cases/ill-modal-unaccessible.expect.yaml +4/−0
- test/typecheck/cases/ill-modal-unaccessible.rzk +5/−0
- test/typecheck/cases/ill-not-function.expect.yaml +6/−0
- test/typecheck/cases/ill-not-function.rzk +3/−0
- test/typecheck/cases/ill-not-pair-first-unit.expect.yaml +6/−0
- test/typecheck/cases/ill-not-pair-first-unit.rzk +3/−0
- test/typecheck/cases/ill-not-pair-second-unit.expect.yaml +6/−0
- test/typecheck/cases/ill-not-pair-second-unit.rzk +3/−0
- test/typecheck/cases/ill-param-untyped-pattern.expect.yaml +6/−0
- test/typecheck/cases/ill-param-untyped-pattern.rzk +3/−0
- test/typecheck/cases/ill-rec-or-overlap-incoherent.expect.yaml +6/−0
- test/typecheck/cases/ill-rec-or-overlap-incoherent.rzk +9/−0
- test/typecheck/cases/ill-render-latex-define.expect.yaml +7/−0
- test/typecheck/cases/ill-render-latex-define.rzk +5/−0
- test/typecheck/cases/ill-section-end-mismatch.expect.yaml +7/−0
- test/typecheck/cases/ill-section-end-mismatch.rzk +5/−0
- test/typecheck/cases/ill-section-not-closed.expect.yaml +6/−0
- test/typecheck/cases/ill-section-not-closed.rzk +5/−0
- test/typecheck/cases/ill-section-unexpected-end.expect.yaml +7/−0
- test/typecheck/cases/ill-section-unexpected-end.rzk +3/−0
- test/typecheck/cases/ill-set-option-render.expect.yaml +6/−0
- test/typecheck/cases/ill-set-option-render.rzk +3/−0
- test/typecheck/cases/ill-set-option-unknown.expect.yaml +6/−0
- test/typecheck/cases/ill-set-option-unknown.rzk +3/−0
- test/typecheck/cases/ill-set-option-verbosity.expect.yaml +6/−0
- test/typecheck/cases/ill-set-option-verbosity.rzk +5/−0
- test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk +16/−0
- test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk +17/−0
- test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk +18/−0
- test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.rzk +10/−0
- test/typecheck/cases/ill-tope-not-satisfied-app-shape.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-not-satisfied-app-shape.rzk +7/−0
- test/typecheck/cases/ill-tope-not-satisfied-rec-bot.expect.yaml +7/−0
- test/typecheck/cases/ill-tope-not-satisfied-rec-bot.rzk +3/−0
- test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml +7/−0
- test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk +8/−0
- test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk +9/−0
- test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.expect.yaml +7/−0
- test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.rzk +10/−0
- test/typecheck/cases/ill-tope-param-lambda.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-param-lambda.rzk +3/−0
- test/typecheck/cases/ill-tope-param-typefun.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-param-typefun.rzk +3/−0
- test/typecheck/cases/ill-tope-subtle-app-shape-5d.expect.yaml +7/−0
- test/typecheck/cases/ill-tope-subtle-app-shape-5d.rzk +17/−0
- test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.expect.yaml +6/−0
- test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.rzk +11/−0
- test/typecheck/cases/ill-tope-subtle-tope-family-4d.expect.yaml +7/−0
- test/typecheck/cases/ill-tope-subtle-tope-family-4d.rzk +14/−0
- test/typecheck/cases/ill-tope-subtle-tope-family-5d.expect.yaml +8/−0
- test/typecheck/cases/ill-tope-subtle-tope-family-5d.rzk +14/−0
- test/typecheck/cases/ill-undefined.expect.yaml +5/−0
- test/typecheck/cases/ill-undefined.rzk +3/−0
- test/typecheck/cases/ill-unexpected-lambda.expect.yaml +6/−0
- test/typecheck/cases/ill-unexpected-lambda.rzk +3/−0
- test/typecheck/cases/ill-unexpected-pair.expect.yaml +6/−0
- test/typecheck/cases/ill-unexpected-pair.rzk +3/−0
- test/typecheck/cases/ill-unexpected-refl.expect.yaml +6/−0
- test/typecheck/cases/ill-unexpected-refl.rzk +3/−0
- test/typecheck/cases/ill-unify-terms-path.expect.yaml +6/−0
- test/typecheck/cases/ill-unify-terms-path.rzk +9/−0
- test/typecheck/cases/ill-unify.expect.yaml +6/−0
- test/typecheck/cases/ill-unify.rzk +7/−0
- test/typecheck/cases/ill-unset-option-unknown.expect.yaml +6/−0
- test/typecheck/cases/ill-unset-option-unknown.rzk +3/−0
- test/typecheck/cases/ill-unused-assumption.expect.yaml +7/−0
- test/typecheck/cases/ill-unused-assumption.rzk +13/−0
- test/typecheck/cases/literate-fence/doc.rzk.md +11/−0
- test/typecheck/cases/literate-fence/expect.yaml +5/−0
- test/typecheck/cases/multimodule-first-error/bad.rzk +3/−0
- test/typecheck/cases/multimodule-first-error/expect.yaml +10/−0
- test/typecheck/cases/multimodule-first-error/lib.rzk +5/−0
- test/typecheck/cases/multimodule-two-ok/expect.yaml +7/−0
- test/typecheck/cases/multimodule-two-ok/lib.rzk +9/−0
- test/typecheck/cases/multimodule-two-ok/user.rzk +3/−0
ChangeLog.md view
@@ -6,12 +6,50 @@ and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## v0.8.0 — 2026-06-04++Major changes:++- Experimental **modal extension** by [Islam Talipov](https://github.com/LIshy2) for reasoning in the style of Triangulated Type Theory (see [#225](https://github.com/rzk-lang/rzk/pull/225) and [#224](https://github.com/rzk-lang/rzk/pull/224)):+ - Four modalities: discretization `#!rzk _b` (`#!rzk ♭`), codiscretization `#!rzk _#` (`#!rzk ♯`), orientation reversal `#!rzk _op` (`#!rzk ᵒᵖ`), and identity `#!rzk _id`, composed by a fixed mode theory.+ - Modal types `#!rzk <| m | A |>`, introduction form `#!rzk mod m x`, and the eliminator `#!rzk let mod m x := … in …`.+ - Modal tope axioms (`#!rzk inv`/`#!rzk uninv`, `#!rzk flip`/`#!rzk unflip`) with η-rules and reductions for the cube/tope layer under `#!rzk _op`.+ - New documentation page [Modalities (experimental)](https://rzk-lang.github.io/rzk/en/v0.8.0/reference/modalities.rzk/) (also [in Russian](https://rzk-lang.github.io/rzk/ru/v0.8.0/reference/modalities.rzk/)).++ !!! warning "Known unsoundness footgun"+ Users formalizing Triangulated Type Theory must **not** postulate the amazing right adjoint `√` to `#!rzk (2 → -)` (or any "tininess of `2`") on the existing cube `#!rzk 2` — this is unsound in the standard RS17 model because `#!rzk 2` carries a totally-ordered tope layer (GWB §1.3). A sound place to assert `√` (a lattice cube `𝕀`) is planned for the next release.++- Experimental **`let`-bindings** at the MLTT level (see [#222](https://github.com/rzk-lang/rzk/pull/222)), with formatter support and tests. Documented in [Let bindings](https://rzk-lang.github.io/rzk/en/v0.8.0/reference/let-bindings.rzk/).++- Data-driven **typechecking test suite** (see [#223](https://github.com/rzk-lang/rzk/pull/223)): YAML-described fixtures under `rzk/test/typecheck/cases/`, with paired (`foo.rzk` + `foo.expect.yaml`) and directory layouts, regression-traceability metadata, and a schema (`rzk/test/typecheck/SCHEMA.md`).++Other changes:++- Run BNFC with `--text-token` and bump the Stack resolver to `lts-24.34` (see [#221](https://github.com/rzk-lang/rzk/pull/221)).+- Add an agda-input-like extension to input Unicode symbols in the Rzk Playground, including superscript and subscript symbols (see [#210](https://github.com/rzk-lang/rzk/pull/210)).++Fixes:++- Apply a prettier formatter pass (see [#214](https://github.com/rzk-lang/rzk/pull/214)).+- Fix formatting for colon in parameters/parens (see [#216](https://github.com/rzk-lang/rzk/pull/216), fixes [#215](https://github.com/rzk-lang/rzk/issues/215)).+- Normalize tabs to spaces in the formatter; use whole-document formatting with LSP (see [#217](https://github.com/rzk-lang/rzk/pull/217)).+- Insert newline after `=_{…}` if it was on its own line; avoid an extra trailing newline (see [#218](https://github.com/rzk-lang/rzk/pull/218)).+- Fix `#unset-option` for `render`.++Documentation:++- Add commands documentation and complete the Russian translation of the Reference section (see [#211](https://github.com/rzk-lang/rzk/pull/211)).+- Translate documentation for modalities and let-bindings into Russian.++CI / infrastructure:++- Bump GitHub Actions versions and switch to better-maintained actions (see [#212](https://github.com/rzk-lang/rzk/pull/212)).+ ## v0.7.7 — 2025-11-04 Important fixes: - Fix subtyping (automatic coercion for extension types and tope disjunction elimination) (see [#207](https://github.com/rzk-lang/rzk/pull/207))- 1. Do not assume variance for the argument of function/type family application (fixes #206). 2. Separately check tope families and extension types (and $\Pi$-types), since, for tope families, variance of the argument is different. 3. Fix `refl` to check for equality, not subtyping.@@ -33,7 +71,7 @@ Minor changes: -- Suport syntax sugar for nested Σ-types (see [#183](https://github.com/rzk-lang/rzk/pull/183))+- Support syntax sugar for nested Σ-types (see [#183](https://github.com/rzk-lang/rzk/pull/183)) - Improve error reporting (see [#176](https://github.com/rzk-lang/rzk/pull/176) and [#179](https://github.com/rzk-lang/rzk/pull/179)) Fixes:@@ -160,7 +198,6 @@ This version contains a fix for the command line interface of `rzk`: - Fix command line `rzk typecheck` (see [#106](https://github.com/rzk-lang/rzk/pull/106))- - Previous version ignored failures in the command line (the bug was introduced when allowing better autocompletion in LSP). @@ -362,7 +399,6 @@ 10. Now it is possible to have type ascriptions: `t as T`. This can help with ensuring types of subexpressions in parts of formalizations, or to upcast types. 11. New (better) commands are now supported:- 1. `#define <name> (<param>)* : <type> := <term>` — same as `#def`, but with full spelling of the word 2. `#postulate <name> (<param>)* : <type>` — postulate an axiom 3. `#check <term> : <type>` — typecheck an expression against a given type@@ -370,7 +406,6 @@ 5. `#compute-nf <term>` — compute normal form of a term 6. `#compute <term>` — alias for `#compute-whnf` 7. `#set-option <option> = <value>` — set a (typechecker) option:- - `#set-option "verbosity" = "silent"` — no log printing - `#set-option "verbosity" = "normal"` — log typechecking progress - `#set-option "verbosity" = "debug"` — log every intermediate action
Setup.hs view
@@ -20,9 +20,18 @@ { hookedPrograms = [ bnfcProgram ] , postConf = \args flags packageDesc localBuildInfo -> do #ifndef mingw32_HOST_OS- _ <- system "bnfc -d -p Language.Rzk --generic --functor -o src/ grammar/Syntax.cf"+ _ <- system "bnfc -d -p Language.Rzk --generic --functor --text-token -o src/ grammar/Syntax.cf"+ _ <- system "alex --ghc src/Language/Rzk/Syntax/Lex.x"+ _ <- system "happy --array --info --ghc --coerce src/Language/Rzk/Syntax/Par.y" #endif postConf simpleUserHooks args flags packageDesc localBuildInfo+ , preBuild = \args flags -> do+#ifndef mingw32_HOST_OS+ _ <- system "bnfc -d -p Language.Rzk --generic --functor --text-token -o src/ grammar/Syntax.cf"+ _ <- system "alex --ghc src/Language/Rzk/Syntax/Lex.x"+ _ <- system "happy --array --info --ghc --coerce src/Language/Rzk/Syntax/Par.y"+#endif+ preBuild simpleUserHooks args flags } -- | TODO: This should be in Cabal.Distribution.Simple.Program.Builtin.
app/Main.hs view
@@ -2,18 +2,17 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-}-{-# LANGUAGE NamedFieldPuns #-} module Main (main) where #ifndef __GHCJS__-import Main.Utf8 (withUtf8)+import Main.Utf8 (withUtf8) #endif -import Control.Monad (forM, forM_, unless, when,- (>=>))+import Control.Monad (forM, forM_, unless, when, (>=>)) import Data.Version (showVersion) #ifdef LSP_ENABLED@@ -24,11 +23,13 @@ import System.Exit (exitFailure, exitSuccess) import Data.Functor (void, (<&>))+import qualified Data.Text.IO as T+ import Paths_rzk (version) import Rzk.Format (formatFile, formatFileWrite, isWellFormattedFile)-import Rzk.TypeCheck import Rzk.Main+import Rzk.TypeCheck data FormatOptions = FormatOptions { check :: Bool@@ -78,7 +79,7 @@ case expandedPaths of [] -> error "No files found" filePaths -> do- when (not check && not write) $ forM_ filePaths (formatFile >=> putStrLn)+ when (not check && not write) $ forM_ filePaths (formatFile >=> T.putStrLn) when write $ forM_ filePaths formatFileWrite when check $ do results <- forM filePaths $ \path -> isWellFormattedFile path <&> (path,)
grammar/Syntax.cf view
@@ -65,29 +65,49 @@ _. Pattern1 ::= Pattern ; separator nonempty Pattern1 "," ; --- Parameter introduction (for lambda abstractions)-ParamPattern. Param ::= Pattern ;-ParamPatternType. Param ::= "(" [Pattern] ":" Term ")" ;-ParamPatternShape. Param ::= "(" [Pattern] ":" Term "|" Term ")" ;+-- Parameter introduction for lambda abstractions+ParamPattern. Param ::= Pattern ;+ParamPatternType. Param ::= "(" [Pattern] ":" Term ")" ;+ParamPatternShape. Param ::= "(" [Pattern] ":" Term "|" Term ")" ; ParamPatternShapeDeprecated. Param ::= "{" Pattern ":" Term "|" Term "}" ;+ParamPatternModalType. Param ::= "(" [Pattern] ":" Modality Term ")" ; separator nonempty Param "" ; +-- Name introduction for let bindings+BindPattern. Bind ::= Pattern ;+BindPatternType. Bind ::= Pattern ":" Term ;+ -- Parameter declaration for functions and extension types-ParamType. ParamDecl ::= Term6 ;-ParamTermType. ParamDecl ::= "(" Term ":" Term ")" ;-ParamTermShape. ParamDecl ::= "(" Term ":" Term "|" Term ")" ;+ParamType. ParamDecl ::= Term6 ;+ParamTermType. ParamDecl ::= "(" Term ":" Term ")" ;+ParamTermShape. ParamDecl ::= "(" Term ":" Term "|" Term ")" ; ParamTermTypeDeprecated. ParamDecl ::= "{" Pattern ":" Term "}" ; ParamVarShapeDeprecated. ParamDecl ::= "{" "(" Pattern ":" Term ")" "|" Term "}" ; paramVarShapeDeprecated. ParamDecl ::= "{" Pattern ":" Term "|" Term "}" ; define paramVarShapeDeprecated pat cube tope = ParamVarShapeDeprecated pat cube tope ;+ParamTermModalType. ParamDecl ::= "(" Term ":" Modality Term ")" ; -- Parameter declaration for Sigma types-SigmaParam. SigmaParam ::= Pattern ":" Term ;+SigmaParam. SigmaParam ::= Pattern ":" Term ;+SigmaParamModal. SigmaParam ::= Pattern ":" Modality Term ; separator nonempty SigmaParam "," ; Restriction. Restriction ::= Term "↦" Term ; separator nonempty Restriction "," ; +-- Modalities (Unicode canonical forms + ASCII alternatives)+Flat. Modality ::= "♭" ;+ASCII_Flat. Modality ::= "_b" ;+Sharp. Modality ::= "♯" ;+ASCII_Sharp. Modality ::= "_#" ;+Op. Modality ::= "ᵒᵖ" ;+ASCII_Op. Modality ::= "_op" ;+Id. Modality ::= "_id" ;+++Single. ModComp ::= Modality ;+Comp. ModComp ::= Modality "/" Modality ;+ -- Universes Universe. Term7 ::= "U" ; UniverseCube. Term7 ::= "CUBE" ;@@ -106,6 +126,18 @@ TopeLEQ. Term4 ::= Term5 "≤" Term5 ; TopeAnd. Term3 ::= Term4 "∧" Term3 ; TopeOr. Term2 ::= Term3 "∨" Term2 ;+TopeInv. Term6 ::= "invᵒᵖ" Term7 ;+ascii_TopeInv. Term6 ::= "inv_op" Term7 ;+define ascii_TopeInv t = TopeInv t ;+TopeUninv. Term6 ::= "uninvᵒᵖ" Term7 ;+ascii_TopeUninv. Term6 ::= "uninv_op" Term7 ;+define ascii_TopeUninv t = TopeUninv t ;+CubeFlip. Term6 ::= "flipᵒᵖ" Term7 ;+ascii_CubeFlip. Term6 ::= "flip_op" Term7 ;+define ascii_CubeFlip t = CubeFlip t ;+CubeUnflip. Term6 ::= "unflipᵒᵖ" Term7 ;+ascii_CubeUnflip. Term6 ::= "unflip_op" Term7 ;+define ascii_CubeUnflip t = CubeUnflip t ; -- Tope disjunction elimination RecBottom. Term7 ::= "recBOT" ; RecOr. Term7 ::= "recOR" "(" [Restriction] ")" ;@@ -113,6 +145,7 @@ -- Types TypeFun. Term1 ::= ParamDecl "→" Term1 ; TypeSigma. Term1 ::= "Σ" "(" Pattern ":" Term ")" "," Term1 ;+TypeSigmaModal. Term1 ::= "Σ" "(" Pattern ":" Modality Term ")" "," Term1 ; TypeSigmaTuple. Term1 ::= "Σ" "(" SigmaParam "," [SigmaParam] ")" "," Term1 ; TypeUnit. Term7 ::= "Unit" ; TypeId. Term1 ::= Term2 "=_{" Term "}" Term2 ;@@ -120,10 +153,15 @@ TypeRestricted. Term6 ::= Term6 "[" [Restriction] "]" ; TypeExtensionDeprecated. Term7 ::= "<" ParamDecl "→" Term ">" ; -- Terms+Let. Term1 ::= "let" Bind ":=" Term "in" Term ; App. Term6 ::= Term6 Term7 ; Lambda. Term1 ::= "\\" [Param] "→" Term1 ; Pair. Term7 ::= "(" Term "," Term ")" ; Tuple. Term7 ::= "(" Term "," Term "," [Term] ")" ;+ModApp. Term7 ::= "mod" Modality Term7 ;+ModType. Term7 ::= "<|" Modality "|" Term "|>" ;+ModExtract. Term6 ::= "$extract$" ModComp Term7 ;+LetMod. Term1 ::= "let" "mod" ModComp Bind ":=" Term "in" Term ; First. Term6 ::= "π₁" Term7 ; Second. Term6 ::= "π₂" Term7 ; Unit. Term7 ::= "unit" ;@@ -158,6 +196,7 @@ ASCII_TypeFun. Term1 ::= ParamDecl "->" Term1 ; ASCII_TypeSigma. Term1 ::= "Sigma" "(" Pattern ":" Term ")" "," Term1 ;+ASCII_TypeSigmaModal. Term1 ::= "Sigma" "(" Pattern ":" Modality Term ")" "," Term1 ; ASCII_TypeSigmaTuple. Term1 ::= "Sigma" "(" SigmaParam "," [SigmaParam] ")" "," Term1 ; ASCII_Lambda. Term1 ::= "\\" [Param] "->" Term1 ;
rzk.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.24 --- This file has been generated from package.yaml by hpack version 0.38.1.+-- This file has been generated from package.yaml by hpack version 0.39.1. -- -- see: https://github.com/sol/hpack name: rzk-version: 0.7.7+version: 0.8.0 synopsis: An experimental proof assistant for synthetic ∞-categories description: Please see the README on GitHub at <https://github.com/rzk-lang/rzk#readme> category: Dependent Types@@ -19,6 +19,135 @@ build-type: Custom extra-source-files: grammar/Syntax.cf+ test/typecheck/SCHEMA.md+ test/typecheck/cases/happy-check.rzk+ test/typecheck/cases/happy-issue-9-relfunext2-id.rzk+ test/typecheck/cases/happy-modal-basics.rzk+ test/typecheck/cases/happy-modal-inv.rzk+ test/typecheck/cases/happy-refl-path.rzk+ test/typecheck/cases/happy-shott-simplicial-subcomplexes.rzk+ test/typecheck/cases/happy-tope-high-dim-cubes.rzk+ test/typecheck/cases/happy-tope-nested-rec-or-d4.rzk+ test/typecheck/cases/happy-tope-nested-rec-or-d5.rzk+ test/typecheck/cases/happy-tope-nested-rec-or-d6.rzk+ test/typecheck/cases/happy-tope-nested-rec-or.rzk+ test/typecheck/cases/happy-tope-rec-and-restrict.rzk+ test/typecheck/cases/happy-tope-shapes.rzk+ test/typecheck/cases/ill-bare-lambda-compute.rzk+ test/typecheck/cases/ill-bare-refl-compute.rzk+ test/typecheck/cases/ill-duplicate.rzk+ test/typecheck/cases/ill-implicit.rzk+ test/typecheck/cases/ill-invalid-arg-type-bot.rzk+ test/typecheck/cases/ill-issue-13-flip-flip-wrong.rzk+ test/typecheck/cases/ill-issue-206-families-of-extension.rzk+ test/typecheck/cases/ill-issue-33-restriction-coherence.rzk+ test/typecheck/cases/ill-modal-b-no-dist.rzk+ test/typecheck/cases/ill-modal-not-modal.rzk+ test/typecheck/cases/ill-modal-op-unaccessible.rzk+ test/typecheck/cases/ill-modal-unaccessible.rzk+ test/typecheck/cases/ill-not-function.rzk+ test/typecheck/cases/ill-not-pair-first-unit.rzk+ test/typecheck/cases/ill-not-pair-second-unit.rzk+ test/typecheck/cases/ill-param-untyped-pattern.rzk+ test/typecheck/cases/ill-rec-or-overlap-incoherent.rzk+ test/typecheck/cases/ill-render-latex-define.rzk+ test/typecheck/cases/ill-section-end-mismatch.rzk+ test/typecheck/cases/ill-section-not-closed.rzk+ test/typecheck/cases/ill-section-unexpected-end.rzk+ test/typecheck/cases/ill-set-option-render.rzk+ test/typecheck/cases/ill-set-option-unknown.rzk+ test/typecheck/cases/ill-set-option-verbosity.rzk+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.rzk+ test/typecheck/cases/ill-tope-not-satisfied-app-shape.rzk+ test/typecheck/cases/ill-tope-not-satisfied-rec-bot.rzk+ test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk+ test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk+ test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.rzk+ test/typecheck/cases/ill-tope-param-lambda.rzk+ test/typecheck/cases/ill-tope-param-typefun.rzk+ test/typecheck/cases/ill-tope-subtle-app-shape-5d.rzk+ test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.rzk+ test/typecheck/cases/ill-tope-subtle-tope-family-4d.rzk+ test/typecheck/cases/ill-tope-subtle-tope-family-5d.rzk+ test/typecheck/cases/ill-undefined.rzk+ test/typecheck/cases/ill-unexpected-lambda.rzk+ test/typecheck/cases/ill-unexpected-pair.rzk+ test/typecheck/cases/ill-unexpected-refl.rzk+ test/typecheck/cases/ill-unify-terms-path.rzk+ test/typecheck/cases/ill-unify.rzk+ test/typecheck/cases/ill-unset-option-unknown.rzk+ test/typecheck/cases/ill-unused-assumption.rzk+ test/typecheck/cases/multimodule-first-error/bad.rzk+ test/typecheck/cases/multimodule-first-error/lib.rzk+ test/typecheck/cases/multimodule-two-ok/lib.rzk+ test/typecheck/cases/multimodule-two-ok/user.rzk+ test/typecheck/cases/happy-check.expect.yaml+ test/typecheck/cases/happy-issue-9-relfunext2-id.expect.yaml+ test/typecheck/cases/happy-modal-basics.expect.yaml+ test/typecheck/cases/happy-modal-inv.expect.yaml+ test/typecheck/cases/happy-refl-path.expect.yaml+ test/typecheck/cases/happy-shott-simplicial-subcomplexes.expect.yaml+ test/typecheck/cases/happy-tope-high-dim-cubes.expect.yaml+ test/typecheck/cases/happy-tope-nested-rec-or-d4.expect.yaml+ test/typecheck/cases/happy-tope-nested-rec-or-d5.expect.yaml+ test/typecheck/cases/happy-tope-nested-rec-or-d6.expect.yaml+ test/typecheck/cases/happy-tope-nested-rec-or.expect.yaml+ test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml+ test/typecheck/cases/happy-tope-shapes.expect.yaml+ test/typecheck/cases/ill-bare-lambda-compute.expect.yaml+ test/typecheck/cases/ill-bare-refl-compute.expect.yaml+ test/typecheck/cases/ill-duplicate.expect.yaml+ test/typecheck/cases/ill-implicit.expect.yaml+ test/typecheck/cases/ill-invalid-arg-type-bot.expect.yaml+ test/typecheck/cases/ill-issue-13-flip-flip-wrong.expect.yaml+ test/typecheck/cases/ill-issue-206-families-of-extension.expect.yaml+ test/typecheck/cases/ill-issue-33-restriction-coherence.expect.yaml+ test/typecheck/cases/ill-modal-b-no-dist.expect.yaml+ test/typecheck/cases/ill-modal-not-modal.expect.yaml+ test/typecheck/cases/ill-modal-op-unaccessible.expect.yaml+ test/typecheck/cases/ill-modal-unaccessible.expect.yaml+ test/typecheck/cases/ill-not-function.expect.yaml+ test/typecheck/cases/ill-not-pair-first-unit.expect.yaml+ test/typecheck/cases/ill-not-pair-second-unit.expect.yaml+ test/typecheck/cases/ill-param-untyped-pattern.expect.yaml+ test/typecheck/cases/ill-rec-or-overlap-incoherent.expect.yaml+ test/typecheck/cases/ill-render-latex-define.expect.yaml+ test/typecheck/cases/ill-section-end-mismatch.expect.yaml+ test/typecheck/cases/ill-section-not-closed.expect.yaml+ test/typecheck/cases/ill-section-unexpected-end.expect.yaml+ test/typecheck/cases/ill-set-option-render.expect.yaml+ test/typecheck/cases/ill-set-option-unknown.expect.yaml+ test/typecheck/cases/ill-set-option-verbosity.expect.yaml+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.expect.yaml+ test/typecheck/cases/ill-tope-not-satisfied-app-shape.expect.yaml+ test/typecheck/cases/ill-tope-not-satisfied-rec-bot.expect.yaml+ test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml+ test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml+ test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.expect.yaml+ test/typecheck/cases/ill-tope-param-lambda.expect.yaml+ test/typecheck/cases/ill-tope-param-typefun.expect.yaml+ test/typecheck/cases/ill-tope-subtle-app-shape-5d.expect.yaml+ test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.expect.yaml+ test/typecheck/cases/ill-tope-subtle-tope-family-4d.expect.yaml+ test/typecheck/cases/ill-tope-subtle-tope-family-5d.expect.yaml+ test/typecheck/cases/ill-undefined.expect.yaml+ test/typecheck/cases/ill-unexpected-lambda.expect.yaml+ test/typecheck/cases/ill-unexpected-pair.expect.yaml+ test/typecheck/cases/ill-unexpected-refl.expect.yaml+ test/typecheck/cases/ill-unify-terms-path.expect.yaml+ test/typecheck/cases/ill-unify.expect.yaml+ test/typecheck/cases/ill-unset-option-unknown.expect.yaml+ test/typecheck/cases/ill-unused-assumption.expect.yaml+ test/typecheck/cases/literate-fence/expect.yaml+ test/typecheck/cases/multimodule-first-error/expect.yaml+ test/typecheck/cases/multimodule-two-ok/expect.yaml+ test/typecheck/cases/literate-fence/doc.rzk.md extra-doc-files: README.md ChangeLog.md@@ -60,12 +189,12 @@ src default-extensions: DeriveDataTypeable- ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path+ ghc-options: -Wall -Wcompat -Widentities -Werror=missing-fields -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path build-tools: alex >=3.2.4 , happy >=1.19.9 build-tool-depends:- BNFC:bnfc >=2.9.4.1+ BNFC:bnfc >=2.9.6.2 build-depends: Glob >=0.9.3 , array >=0.5.3.0@@ -106,12 +235,12 @@ app default-extensions: DeriveDataTypeable- ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -threaded -rtsopts -with-rtsopts=-N+ ghc-options: -Wall -Wcompat -Widentities -Werror=missing-fields -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -threaded -rtsopts -with-rtsopts=-N build-tools: alex >=3.2.4 , happy >=1.19.9 build-tool-depends:- BNFC:bnfc >=2.9.4.1+ BNFC:bnfc >=2.9.6.2 build-depends: Glob >=0.9.3 , array >=0.5.3.0@@ -139,12 +268,12 @@ test default-extensions: DeriveDataTypeable- ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path+ ghc-options: -Wall -Wcompat -Widentities -Werror=missing-fields -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path build-tools: alex >=3.2.4 , happy >=1.19.9 build-tool-depends:- BNFC:bnfc >=2.9.4.1+ BNFC:bnfc >=2.9.6.2 build-depends: Glob >=0.9.3 , QuickCheck >=2.14@@ -167,31 +296,34 @@ main-is: Spec.hs other-modules: Rzk.FormatSpec+ Rzk.TypeCheckSpec Paths_rzk hs-source-dirs: test default-extensions: DeriveDataTypeable- ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -threaded -rtsopts -with-rtsopts=-N+ ghc-options: -Wall -Wcompat -Widentities -Werror=missing-fields -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -threaded -rtsopts -with-rtsopts=-N build-tools: alex >=3.2.4 , happy >=1.19.9 build-tool-depends:- BNFC:bnfc >=2.9.4.1+ BNFC:bnfc >=2.9.6.2 build-depends: Glob >=0.9.3+ , aeson , array >=0.5.3.0 , base >=4.7 && <5 , bifunctors >=5.5.3 , bytestring >=0.10.8.2 , directory >=1.2.7.0+ , filepath , hspec , hspec-discover , mtl >=2.3.1 , rzk , template-haskell >=2.14.0.0 , text >=1.2.3.1- , yaml >=0.11.0.0+ , yaml default-language: Haskell2010 if flag(lsp) && !impl(ghcjs) cpp-options: -DLSP_ENABLED
src/Language/Rzk/Free/Syntax.hs view
@@ -19,6 +19,7 @@ import Data.List (intercalate, nub, (\\)) import Data.Maybe (fromMaybe) import Data.String+import qualified Data.Text as T import Free.Scoped import Free.Scoped.TH@@ -62,9 +63,34 @@ fromVarIdent :: VarIdent -> Rzk.VarIdent fromVarIdent (VarIdent (Rzk.VarIdent (RzkPosition _file pos) ident)) = Rzk.VarIdent pos ident +data TModality = Sharp | Flat | Op | Id deriving (Eq, Show)++toModality :: Rzk.Modality -> TModality+toModality Rzk.Sharp{} = Sharp+toModality Rzk.ASCII_Sharp{} = Sharp+toModality Rzk.Flat{} = Flat+toModality Rzk.ASCII_Flat{} = Flat+toModality Rzk.Op{} = Op+toModality Rzk.ASCII_Op{} = Op+toModality Rzk.Id{} = Id++modCompToMods :: Rzk.ModComp -> (TModality, TModality)+modCompToMods (Rzk.Single _ m) = (Id, toModality m)+modCompToMods (Rzk.Comp _ ext inn) = (toModality ext, toModality inn)++fromMod :: TModality -> Rzk.Modality+fromMod Sharp = Rzk.Sharp Nothing+fromMod Flat = Rzk.Flat Nothing+fromMod Op = Rzk.Op Nothing+fromMod Id = Rzk.Id Nothing++modsToModComp :: TModality -> TModality -> Rzk.ModComp+modsToModComp Id inn = Rzk.Single Nothing (fromMod inn)+modsToModComp ext inn = Rzk.Comp Nothing (fromMod ext) (fromMod inn)+ data TermF scope term = UniverseF- | UniverseCubeF+ | UniverseCubeF | UniverseTopeF | CubeUnitF | CubeUnitStarF@@ -72,18 +98,23 @@ | Cube2_0F | Cube2_1F | CubeProductF term term+ | CubeFlipF term+ | CubeUnflipF term | TopeTopF | TopeBottomF | TopeEQF term term | TopeLEQF term term | TopeAndF term term | TopeOrF term term+ | TopeInvF term + | TopeUninvF term | RecBottomF | RecOrF [(term, term)] | TypeFunF (Maybe VarIdent) term (Maybe scope) scope | TypeSigmaF (Maybe VarIdent) term scope | TypeIdF term (Maybe term) term | AppF term term+ | LetF (Maybe VarIdent) (Maybe term) term scope | LambdaF (Maybe VarIdent) (Maybe (term, Maybe scope)) scope | PairF term term | FirstF term@@ -94,6 +125,10 @@ | TypeUnitF | TypeAscF term term | TypeRestrictedF term [(term, term)]+ | TypeModalF TModality term+ | ModAppF TModality term+ | ModExtractF TModality TModality term+ | LetModF (Maybe VarIdent) TModality TModality (Maybe term) term scope deriving (Eq, Functor, Foldable, Traversable) deriveBifunctor ''TermF deriveBifoldable ''TermF@@ -228,6 +263,7 @@ Rzk.ASCII_TypeFun loc param ret -> go (Rzk.TypeFun loc param ret) Rzk.ASCII_TypeSigma loc pat ty ret -> go (Rzk.TypeSigma loc pat ty ret)+ Rzk.ASCII_TypeSigmaModal _loc pat md ty body -> go (Rzk.TypeSigmaModal _loc pat md ty body) Rzk.ASCII_TypeSigmaTuple loc p ps tN -> go (Rzk.TypeSigmaTuple loc p ps tN) Rzk.ASCII_Lambda loc pat ret -> go (Rzk.Lambda loc pat ret) Rzk.ASCII_TypeExtensionDeprecated loc shape type_ -> go (Rzk.TypeExtensionDeprecated loc shape type_)@@ -252,6 +288,10 @@ Rzk.TopeLEQ _loc l r -> TopeLEQ (go l) (go r) Rzk.TopeAnd _loc l r -> TopeAnd (go l) (go r) Rzk.TopeOr _loc l r -> TopeOr (go l) (go r)+ Rzk.TopeInv _loc t -> TopeInv (go t)+ Rzk.TopeUninv _loc t -> TopeUninv (go t)+ Rzk.CubeFlip _loc t -> CubeFlip (go t)+ Rzk.CubeUnflip _loc t -> CubeUnflip (go t) Rzk.RecBottom _loc -> RecBottom Rzk.RecOr _loc rs -> RecOr $ flip map rs $ \case Rzk.Restriction _loc tope term -> (go tope, go term)@@ -271,35 +311,66 @@ Rzk.ReflTermType _loc x tA -> Refl (Just (go x, Just (go tA))) Rzk.IdJ _loc a b c d e f -> IdJ (go a) (go b) (go c) (go d) (go e) (go f) Rzk.TypeAsc _loc x t -> TypeAsc (go x) (go t)-+ Rzk.TypeFun _loc (Rzk.ParamTermModalType loc' patTerm md ty) ret ->+ let pat = unsafeTermToPattern patTerm+ letRet = Rzk.LetMod loc' (Rzk.Single loc' md)+ (Rzk.BindPattern loc' pat) (patternToTerm pat) ret+ in go (Rzk.TypeFun _loc (Rzk.ParamTermType loc' patTerm (Rzk.ModType loc' md ty)) letRet) Rzk.TypeFun _loc (Rzk.ParamTermType _ patTerm arg) ret -> let pat = unsafeTermToPattern patTerm- in TypeFun (patternVar pat) (go arg) Nothing (toScopePattern pat bvars ret)+ in TypeFun (patternVar pat) (go arg) Nothing (toScopePattern pat bvars ret) t@(Rzk.TypeFun loc (Rzk.ParamTermShape loc' patTerm cube tope) ret) -> let lint' = case tope of Rzk.App _loc fun arg | void arg == void patTerm -> lint t (Rzk.TypeFun loc (Rzk.ParamTermType loc' patTerm fun) ret) _ -> id pat = unsafeTermToPattern patTerm- in lint' $ TypeFun (patternVar pat) (go cube) (Just (toScopePattern pat bvars tope)) (toScopePattern pat bvars ret)+ in lint' $ TypeFun (patternVar pat) (go cube) (Just (toScopePattern pat bvars tope)) (toScopePattern pat bvars ret) Rzk.TypeFun _loc (Rzk.ParamType _ arg) ret -> TypeFun Nothing (go arg) Nothing (toTerm (fmap S <$> bvars) ret) Rzk.TypeSigma _loc pat tA tB -> TypeSigma (patternVar pat) (go tA) (toScopePattern pat bvars tB) - Rzk.TypeSigmaTuple _loc (Rzk.SigmaParam _ patA tA) ((Rzk.SigmaParam _ patB tB) : ps) tN -> + Rzk.TypeSigmaModal _loc pat md ty body ->+ let letBody = Rzk.LetMod _loc (Rzk.Single _loc md)+ (Rzk.BindPattern _loc pat) (patternToTerm pat) body+ in go (Rzk.TypeSigma _loc pat (Rzk.ModType _loc md ty) letBody)+++ Rzk.TypeSigmaTuple _loc (Rzk.SigmaParamModal loc' pat md ty) rest body ->+ let tailSigma = case rest of+ [] -> body+ [sp] -> sigmaParamToTypeSigma _loc sp body+ (sp:sps) -> Rzk.TypeSigmaTuple _loc sp sps body+ letTail = Rzk.LetMod loc' (Rzk.Single loc' md)+ (Rzk.BindPattern loc' pat) (patternToTerm pat) tailSigma+ in go (Rzk.TypeSigma _loc pat (Rzk.ModType loc' md ty) letTail)+ Rzk.TypeSigmaTuple _loc (Rzk.SigmaParam _ patA tA) (mp@(Rzk.SigmaParamModal{}) : rest) body ->+ go (Rzk.TypeSigma _loc patA tA (case rest of+ [] -> sigmaParamToTypeSigma _loc mp body+ _ -> Rzk.TypeSigmaTuple _loc mp rest body))+ Rzk.TypeSigmaTuple _loc (Rzk.SigmaParam _ patA tA) ((Rzk.SigmaParam _ patB tB) : ps) tN -> go (Rzk.TypeSigmaTuple _loc (Rzk.SigmaParam _loc patX tX) ps tN) where patX = Rzk.PatternPair _loc patA patB tX = Rzk.TypeSigma _loc patA tA tB Rzk.TypeSigmaTuple _loc (Rzk.SigmaParam _ pat tA) [] tB -> go (Rzk.TypeSigma _loc pat tA tB)-+ Rzk.Lambda _loc (Rzk.ParamPatternModalType _ [] _md _ty : params) body ->+ go (Rzk.Lambda _loc params body)+ Rzk.Lambda _loc (Rzk.ParamPatternModalType loc' (pat:pats) md ty : params) body ->+ let inner = Rzk.Lambda _loc+ (if null pats then params+ else Rzk.ParamPatternModalType loc' pats md ty : params)+ body+ letBody = Rzk.LetMod loc' (Rzk.Single loc' md)+ (Rzk.BindPattern loc' pat) (patternToTerm pat) inner+ in go (Rzk.Lambda _loc [Rzk.ParamPatternType loc' [pat] (Rzk.ModType loc' md ty)] letBody) Rzk.Lambda _loc [] body -> go body Rzk.Lambda _loc (Rzk.ParamPattern _ pat : params) body -> Lambda (patternVar pat) Nothing (toScopePattern pat bvars (Rzk.Lambda _loc params body)) Rzk.Lambda _loc (Rzk.ParamPatternType _ [] _ty : params) body ->- go (Rzk.Lambda _loc params body) + go (Rzk.Lambda _loc params body) Rzk.Lambda _loc (Rzk.ParamPatternType _ (pat:pats) ty : params) body -> Lambda (patternVar pat) (Just (go ty, Nothing)) (toScopePattern pat bvars (Rzk.Lambda _loc (Rzk.ParamPatternType _loc pats ty : params) body))@@ -313,13 +384,25 @@ _ -> id in lint' $ Lambda (patternVar pat) (Just (go cube, Just (toScopePattern pat bvars tope))) (toScopePattern pat bvars (Rzk.Lambda _loc (Rzk.ParamPatternShape _loc' pats cube tope : params) body))-+ Rzk.Let _loc (Rzk.BindPattern _ pat) val expr ->+ Let (patternVar pat) Nothing (go val) (toScopePattern pat bvars expr)+ Rzk.Let _loc (Rzk.BindPatternType _ pat ty) val expr -> + Let (patternVar pat) (Just (go ty)) (go val) (toScopePattern pat bvars expr) Rzk.TypeRestricted _loc ty rs -> TypeRestricted (go ty) $ flip map rs $ \case Rzk.Restriction _loc tope term -> (go tope, go term) Rzk.ASCII_Restriction _loc tope term -> (go tope, go term) Rzk.Hole _loc _ident -> error "holes are not supported"+ Rzk.ModApp _loc md body -> ModApp (toModality md) (go body)+ Rzk.ModType _loc md ty -> TypeModal (toModality md) (go ty)+ Rzk.ModExtract{} -> error "$extract$ is an internal term and cannot appear in source"+ Rzk.LetMod _loc comp (Rzk.BindPattern _ pat) val body ->+ let (ext, inn) = modCompToMods comp+ in LetMod (patternVar pat) ext inn Nothing (go val) (toScopePattern pat bvars body)+ Rzk.LetMod _loc comp (Rzk.BindPatternType _ pat ty) val body ->+ let (ext, inn) = modCompToMods comp+ in LetMod (patternVar pat) ext inn (Just (go ty)) (go val) (toScopePattern pat bvars body) patternVar (Rzk.PatternVar _loc (Rzk.VarIdent _ "_")) = Nothing patternVar (Rzk.PatternVar _loc x) = Just (varIdent x)@@ -334,6 +417,7 @@ Rzk.PatternUnit loc -> Rzk.Unit loc Rzk.PatternTuple loc p1 p2 ps -> patternToTerm (desugarTuple loc (reverse ps) p2 p1) + unsafeTermToPattern :: Rzk.Term -> Rzk.Pattern unsafeTermToPattern = ttp where@@ -344,6 +428,11 @@ Rzk.Tuple loc t1 t2 ts -> Rzk.PatternTuple loc (ttp t1) (ttp t2) (map ttp ts) term -> error ("ERROR: expected a pattern but got\n " ++ Rzk.printTree term) +sigmaParamToTypeSigma :: Rzk.BNFC'Position -> Rzk.SigmaParam -> Rzk.Term -> Rzk.Term+sigmaParamToTypeSigma loc sp body = case sp of+ Rzk.SigmaParam _ pat ty -> Rzk.TypeSigma loc pat ty body+ Rzk.SigmaParamModal _ pat md ty -> Rzk.TypeSigmaModal loc pat md ty body+ fromTerm' :: Term' -> Rzk.Term fromTerm' t = fromTermWith' vars (defaultVarIdents \\ vars) t where vars = freeVars t@@ -367,6 +456,13 @@ loc = Nothing + goMod :: TModality -> Rzk.Modality + goMod Sharp = Rzk.Sharp loc+ goMod Flat = Rzk.Flat loc + goMod Op = Rzk.Op loc+ goMod Id = Rzk.Id loc ++ go :: Term' -> Rzk.Term go = \case Pure z -> Rzk.Var loc (fromVarIdent z)@@ -386,6 +482,10 @@ TopeLEQ l r -> Rzk.TopeLEQ loc (go l) (go r) TopeAnd l r -> Rzk.TopeAnd loc (go l) (go r) TopeOr l r -> Rzk.TopeOr loc (go l) (go r)+ TopeInv t -> Rzk.TopeInv loc (go t)+ TopeUninv t -> Rzk.TopeUninv loc (go t)+ CubeFlip t -> Rzk.CubeFlip loc (go t)+ CubeUnflip t -> Rzk.CubeUnflip loc (go t) RecBottom -> Rzk.RecBottom loc RecOr rs -> Rzk.RecOr loc [ Rzk.Restriction loc (go tope) (go term) | (tope, term) <- rs ] @@ -407,7 +507,10 @@ Lambda z (Just (cube, Just tope)) scope -> withFresh z $ \(x, xs) -> Rzk.Lambda loc [Rzk.ParamPatternShape loc [Rzk.PatternVar loc (fromVarIdent x)] (go cube) (fromScope' x used xs tope)] (fromScope' x used xs scope) -- Lambda (Maybe (term, Maybe scope)) scope -> Rzk.Lambda loc (Maybe (term, Maybe scope)) scope-+ Let z Nothing val scope -> withFresh z $ \(x, xs) -> + Rzk.Let loc (Rzk.BindPattern loc (Rzk.PatternVar loc (fromVarIdent x))) (go val) (fromScope' x used xs scope)+ Let z (Just ty) val scope -> withFresh z $ \(x, xs) -> + Rzk.Let loc (Rzk.BindPatternType loc (Rzk.PatternVar loc (fromVarIdent x)) (go ty)) (go val) (fromScope' x used xs scope) Pair l r -> Rzk.Pair loc (go l) (go r) First term -> Rzk.First loc (go term) Second term -> Rzk.Second loc (go term)@@ -420,7 +523,19 @@ TypeAsc l r -> Rzk.TypeAsc loc (go l) (go r) TypeRestricted ty rs -> Rzk.TypeRestricted loc (go ty) (map (\(tope, term) -> (Rzk.Restriction loc (go tope) (go term))) rs)+ TypeModal m ty -> Rzk.ModType loc (goMod m) (go ty)+ ModApp m ty -> Rzk.ModApp loc (goMod m) (go ty)+ ModExtract ma mb t -> Rzk.ModExtract loc (Rzk.Comp loc (goMod ma) (goMod mb)) (go t)+ LetMod z ext inn Nothing val scope -> withFresh z $ \(x, xs) ->+ Rzk.LetMod loc (modsToModComp ext inn)+ (Rzk.BindPattern loc (Rzk.PatternVar loc (fromVarIdent x)))+ (go val) (fromScope' x used xs scope)+ LetMod z ext inn (Just ty) val scope -> withFresh z $ \(x, xs) ->+ Rzk.LetMod loc (modsToModComp ext inn)+ (Rzk.BindPatternType loc (Rzk.PatternVar loc (fromVarIdent x)) (go ty))+ (go val) (fromScope' x used xs scope) + defaultVarIdents :: [VarIdent] defaultVarIdents = [ fromString name@@ -445,18 +560,18 @@ -- | Increment the subscript number at the end of the indentifier. ----- >>> putStrLn $ incIndex "x"+-- >>> putStrLn $ T.unpack $ incIndex "x" -- x₁--- >>> putStrLn $ incIndex "x₁₉"+-- >>> putStrLn $ T.unpack $ incIndex "x₁₉" -- x₂₀-incIndex :: String -> String-incIndex s = name <> newIndex+incIndex :: T.Text -> T.Text+incIndex s = T.pack $ name <> newIndex where digitsSub = "₀₁₂₃₄₅₆₇₈₉" :: String isDigitSub = (`elem` digitsSub) digitFromSub c = chr ((ord c - ord '₀') + ord '0') digitToSub c = chr ((ord c - ord '0') + ord '₀')- (name, index) = break isDigitSub s+ (name, index) = break isDigitSub (T.unpack s) oldIndexN = read ('0' : map digitFromSub index) -- FIXME: read newIndex = map digitToSub (show (oldIndexN + 1)) @@ -464,9 +579,9 @@ show = Rzk.printTree . fromTerm' instance IsString Term' where- fromString = toTerm' . fromRight . Rzk.parseTerm+ fromString = toTerm' . fromRight . Rzk.parseTerm . T.pack where- fromRight (Left err) = error ("Parse error: " <> err)+ fromRight (Left err) = error (T.unpack $ "Parse error: " <> err) fromRight (Right t) = t instance Show TermT' where
src/Language/Rzk/Syntax.hs view
@@ -21,48 +21,49 @@ evaluate, try) import Data.Char (isSpace)-import qualified Data.List as List+import qualified Data.Text as T import Language.Rzk.Syntax.Abs import qualified Language.Rzk.Syntax.Layout as Layout import qualified Language.Rzk.Syntax.Print as Print -import Language.Rzk.Syntax.Lex (tokens, Token)+import Control.Arrow (ArrowChoice (left))+import GHC.IO (unsafePerformIO)+import Language.Rzk.Syntax.Lex (Token, tokens) import Language.Rzk.Syntax.Par (pModule, pTerm)-import GHC.IO (unsafePerformIO) -tryOrDisplayException :: Either String a -> IO (Either String a)+tryOrDisplayException :: Either T.Text a -> IO (Either T.Text a) tryOrDisplayException = tryOrDisplayExceptionIO . evaluate -tryOrDisplayExceptionIO :: IO (Either String a) -> IO (Either String a)+tryOrDisplayExceptionIO :: IO (Either T.Text a) -> IO (Either T.Text a) tryOrDisplayExceptionIO x = try x >>= \case- Left (ex :: SomeException) -> return (Left (displayException ex))+ Left (ex :: SomeException) -> return (Left (T.pack $ displayException ex)) Right result -> return result -parseModuleSafe :: String -> IO (Either String Module)+parseModuleSafe :: T.Text -> IO (Either T.Text Module) parseModuleSafe = tryOrDisplayException . parseModule -parseModule :: String -> Either String Module-parseModule = pModule . Layout.resolveLayout True . tokens . tryExtractMarkdownCodeBlocks "rzk"+parseModule :: T.Text -> Either T.Text Module+parseModule = left T.pack . pModule . Layout.resolveLayout True . tokens . tryExtractMarkdownCodeBlocks "rzk" -parseModuleRzk :: String -> Either String Module-parseModuleRzk = pModule . Layout.resolveLayout True . tokens+parseModuleRzk :: T.Text -> Either T.Text Module+parseModuleRzk = left T.pack . pModule . Layout.resolveLayout True . tokens -parseModuleFile :: FilePath -> IO (Either String Module)+parseModuleFile :: FilePath -> IO (Either T.Text Module) parseModuleFile path = do source <- readFile path- parseModuleSafe source+ parseModuleSafe (T.pack source) -parseTerm :: String -> Either String Term-parseTerm = pTerm . tokens+parseTerm :: T.Text -> Either T.Text Term+parseTerm = left T.pack . pTerm . tokens -tryExtractMarkdownCodeBlocks :: String -> String -> String+tryExtractMarkdownCodeBlocks :: T.Text -> T.Text -> T.Text tryExtractMarkdownCodeBlocks alias input- | ("```" <> alias <> "\n") `List.isInfixOf` input = extractMarkdownCodeBlocks alias input+ | ("```" <> alias <> "\n") `T.isInfixOf` input = extractMarkdownCodeBlocks alias input | otherwise = input -data LineType = NonCode | CodeOf String+data LineType = NonCode | CodeOf T.Text -- | Extract code for a given alias (e.g. "rzk" or "haskell") from a Markdown file -- by replacing any lines that do not belong to the code in that language with blank lines.@@ -86,7 +87,7 @@ -- := U -- ``` -- asda--- >>> putStrLn $ extractMarkdownCodeBlocks "rzk" example+-- >>> putStrLn $ T.unpack $ extractMarkdownCodeBlocks "rzk" example -- <BLANKLINE> -- <BLANKLINE> -- #lang rzk-1@@ -98,8 +99,8 @@ -- <BLANKLINE> -- <BLANKLINE> -- <BLANKLINE>-extractMarkdownCodeBlocks :: String -> String -> String-extractMarkdownCodeBlocks alias = unlines . blankNonCode NonCode . map trim . lines+extractMarkdownCodeBlocks :: T.Text -> T.Text -> T.Text+extractMarkdownCodeBlocks alias = T.unlines . blankNonCode NonCode . map trim . T.lines where blankNonCode _prevType [] = [] blankNonCode prevType (line : lines_) =@@ -110,19 +111,20 @@ | otherwise -> "" : blankNonCode prevType lines_ NonCode -> "" : blankNonCode (identifyCodeBlockStart line) lines_ - trim = List.dropWhileEnd isSpace+ trim = T.dropWhileEnd isSpace -identifyCodeBlockStart :: String -> LineType+identifyCodeBlockStart :: T.Text -> LineType identifyCodeBlockStart line | prefix == "```" =- case words suffix of- [] -> CodeOf "text" -- default to text- ('{':'.':lang) : _options -> CodeOf lang -- ``` {.rzk ...- "{" : ('.':lang) : _options -> CodeOf lang -- ``` { .rzk ...- lang : _options -> CodeOf lang -- ```rzk ...+ -- TODO: find if there is a better way to pattern match than pack/unpack+ case map T.unpack $ T.words suffix of+ [] -> CodeOf "text" -- default to text+ ('{': '.' : lang) : _options -> CodeOf (T.pack lang) -- ``` {.rzk ...+ "{" : ('.':lang) : _options -> CodeOf (T.pack lang) -- ``` { .rzk ...+ lang : _options -> CodeOf (T.pack lang) -- ```rzk ... | otherwise = NonCode where- (prefix, suffix) = List.splitAt 3 line+ (prefix, suffix) = T.splitAt 3 line -- * Making BNFC resolveLayout safer
src/Language/Rzk/Syntax/Abs.hs view
@@ -1,11 +1,13 @@--- File generated by the BNF Converter (bnfc 2.9.6).+-- File generated by the BNF Converter (bnfc 2.9.6.2). +{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE OverloadedStrings #-} -- | The abstract syntax of language Syntax. @@ -19,6 +21,7 @@ ) import qualified Data.String +import qualified Data.Text import qualified Data.Data as C (Data) import qualified GHC.Generics as C (Generic) @@ -80,8 +83,15 @@ | ParamPatternType a [Pattern' a] (Term' a) | ParamPatternShape a [Pattern' a] (Term' a) (Term' a) | ParamPatternShapeDeprecated a (Pattern' a) (Term' a) (Term' a)+ | ParamPatternModalType a [Pattern' a] (Modality' a) (Term' a) deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic) +type Bind = Bind' BNFC'Position+data Bind' a+ = BindPattern a (Pattern' a)+ | BindPatternType a (Pattern' a) (Term' a)+ deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic)+ type ParamDecl = ParamDecl' BNFC'Position data ParamDecl' a = ParamType a (Term' a)@@ -89,10 +99,13 @@ | ParamTermShape a (Term' a) (Term' a) (Term' a) | ParamTermTypeDeprecated a (Pattern' a) (Term' a) | ParamVarShapeDeprecated a (Pattern' a) (Term' a) (Term' a)+ | ParamTermModalType a (Term' a) (Modality' a) (Term' a) deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic) type SigmaParam = SigmaParam' BNFC'Position-data SigmaParam' a = SigmaParam a (Pattern' a) (Term' a)+data SigmaParam' a+ = SigmaParam a (Pattern' a) (Term' a)+ | SigmaParamModal a (Pattern' a) (Modality' a) (Term' a) deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic) type Restriction = Restriction' BNFC'Position@@ -101,6 +114,22 @@ | ASCII_Restriction a (Term' a) (Term' a) deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic) +type Modality = Modality' BNFC'Position+data Modality' a+ = Flat a+ | ASCII_Flat a+ | Sharp a+ | ASCII_Sharp a+ | Op a+ | ASCII_Op a+ | Id a+ deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic)++type ModComp = ModComp' BNFC'Position+data ModComp' a+ = Single a (Modality' a) | Comp a (Modality' a) (Modality' a)+ deriving (C.Eq, C.Ord, C.Show, C.Read, C.Functor, C.Foldable, C.Traversable, C.Data, C.Generic)+ type Term = Term' BNFC'Position data Term' a = Universe a@@ -118,21 +147,31 @@ | TopeLEQ a (Term' a) (Term' a) | TopeAnd a (Term' a) (Term' a) | TopeOr a (Term' a) (Term' a)+ | TopeInv a (Term' a)+ | TopeUninv a (Term' a)+ | CubeFlip a (Term' a)+ | CubeUnflip a (Term' a) | RecBottom a | RecOr a [Restriction' a] | RecOrDeprecated a (Term' a) (Term' a) (Term' a) (Term' a) | TypeFun a (ParamDecl' a) (Term' a) | TypeSigma a (Pattern' a) (Term' a) (Term' a)+ | TypeSigmaModal a (Pattern' a) (Modality' a) (Term' a) (Term' a) | TypeSigmaTuple a (SigmaParam' a) [SigmaParam' a] (Term' a) | TypeUnit a | TypeId a (Term' a) (Term' a) (Term' a) | TypeIdSimple a (Term' a) (Term' a) | TypeRestricted a (Term' a) [Restriction' a] | TypeExtensionDeprecated a (ParamDecl' a) (Term' a)+ | Let a (Bind' a) (Term' a) (Term' a) | App a (Term' a) (Term' a) | Lambda a [Param' a] (Term' a) | Pair a (Term' a) (Term' a) | Tuple a (Term' a) (Term' a) [Term' a]+ | ModApp a (Modality' a) (Term' a)+ | ModType a (Modality' a) (Term' a)+ | ModExtract a (ModComp' a) (Term' a)+ | LetMod a (ModComp' a) (Bind' a) (Term' a) (Term' a) | First a (Term' a) | Second a (Term' a) | Unit a@@ -154,6 +193,7 @@ | ASCII_TopeOr a (Term' a) (Term' a) | ASCII_TypeFun a (ParamDecl' a) (Term' a) | ASCII_TypeSigma a (Pattern' a) (Term' a) (Term' a)+ | ASCII_TypeSigmaModal a (Pattern' a) (Modality' a) (Term' a) (Term' a) | ASCII_TypeSigmaTuple a (SigmaParam' a) [SigmaParam' a] (Term' a) | ASCII_Lambda a [Param' a] (Term' a) | ASCII_TypeExtensionDeprecated a (ParamDecl' a) (Term' a)@@ -185,6 +225,18 @@ paramVarShapeDeprecated :: a -> Pattern' a -> Term' a -> Term' a -> ParamDecl' a paramVarShapeDeprecated = \ _a pat cube tope -> ParamVarShapeDeprecated _a pat cube tope +ascii_TopeInv :: a -> Term' a -> Term' a+ascii_TopeInv = \ _a t -> TopeInv _a t++ascii_TopeUninv :: a -> Term' a -> Term' a+ascii_TopeUninv = \ _a t -> TopeUninv _a t++ascii_CubeFlip :: a -> Term' a -> Term' a+ascii_CubeFlip = \ _a t -> CubeFlip _a t++ascii_CubeUnflip :: a -> Term' a -> Term' a+ascii_CubeUnflip = \ _a t -> CubeUnflip _a t+ ascii_CubeProduct :: a -> Term' a -> Term' a -> Term' a ascii_CubeProduct = \ _a l r -> CubeProduct _a l r @@ -194,10 +246,10 @@ unicode_TypeSigmaTupleAlt :: a -> SigmaParam' a -> [SigmaParam' a] -> Term' a -> Term' a unicode_TypeSigmaTupleAlt = \ _a par pars t -> TypeSigmaTuple _a par pars t -newtype VarIdentToken = VarIdentToken String+newtype VarIdentToken = VarIdentToken Data.Text.Text deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Generic, Data.String.IsString) -newtype HoleIdentToken = HoleIdentToken String+newtype HoleIdentToken = HoleIdentToken Data.Text.Text deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Generic, Data.String.IsString) -- | Start position (line, column) of something.@@ -271,7 +323,13 @@ ParamPatternType p _ _ -> p ParamPatternShape p _ _ _ -> p ParamPatternShapeDeprecated p _ _ _ -> p+ ParamPatternModalType p _ _ _ -> p +instance HasPosition Bind where+ hasPosition = \case+ BindPattern p _ -> p+ BindPatternType p _ _ -> p+ instance HasPosition ParamDecl where hasPosition = \case ParamType p _ -> p@@ -279,16 +337,33 @@ ParamTermShape p _ _ _ -> p ParamTermTypeDeprecated p _ _ -> p ParamVarShapeDeprecated p _ _ _ -> p+ ParamTermModalType p _ _ _ -> p instance HasPosition SigmaParam where hasPosition = \case SigmaParam p _ _ -> p+ SigmaParamModal p _ _ _ -> p instance HasPosition Restriction where hasPosition = \case Restriction p _ _ -> p ASCII_Restriction p _ _ -> p +instance HasPosition Modality where+ hasPosition = \case+ Flat p -> p+ ASCII_Flat p -> p+ Sharp p -> p+ ASCII_Sharp p -> p+ Op p -> p+ ASCII_Op p -> p+ Id p -> p++instance HasPosition ModComp where+ hasPosition = \case+ Single p _ -> p+ Comp p _ _ -> p+ instance HasPosition Term where hasPosition = \case Universe p -> p@@ -306,21 +381,31 @@ TopeLEQ p _ _ -> p TopeAnd p _ _ -> p TopeOr p _ _ -> p+ TopeInv p _ -> p+ TopeUninv p _ -> p+ CubeFlip p _ -> p+ CubeUnflip p _ -> p RecBottom p -> p RecOr p _ -> p RecOrDeprecated p _ _ _ _ -> p TypeFun p _ _ -> p TypeSigma p _ _ _ -> p+ TypeSigmaModal p _ _ _ _ -> p TypeSigmaTuple p _ _ _ -> p TypeUnit p -> p TypeId p _ _ _ -> p TypeIdSimple p _ _ -> p TypeRestricted p _ _ -> p TypeExtensionDeprecated p _ _ -> p+ Let p _ _ _ -> p App p _ _ -> p Lambda p _ _ -> p Pair p _ _ -> p Tuple p _ _ _ -> p+ ModApp p _ _ -> p+ ModType p _ _ -> p+ ModExtract p _ _ -> p+ LetMod p _ _ _ _ -> p First p _ -> p Second p _ -> p Unit p -> p@@ -342,6 +427,7 @@ ASCII_TopeOr p _ _ -> p ASCII_TypeFun p _ _ -> p ASCII_TypeSigma p _ _ _ -> p+ ASCII_TypeSigmaModal p _ _ _ _ -> p ASCII_TypeSigmaTuple p _ _ _ -> p ASCII_Lambda p _ _ -> p ASCII_TypeExtensionDeprecated p _ _ -> p
src/Language/Rzk/Syntax/Layout.hs view
@@ -1,4 +1,4 @@--- File generated by the BNF Converter (bnfc 2.9.6).+-- File generated by the BNF Converter (bnfc 2.9.6.2). {-# OPTIONS_GHC -Wno-incomplete-patterns #-} @@ -37,16 +37,16 @@ layoutOpen, layoutClose, layoutSep :: [TokSymbol] layoutOpen = List.nub $ mapMaybe (delimOpen . snd) layoutWords layoutClose = List.nub $ mapMaybe (delimClose . snd) layoutWords-layoutSep = List.nub $ TokSymbol ";" 32 : map (delimSep . snd) layoutWords+layoutSep = List.nub $ TokSymbol ";" 34 : map (delimSep . snd) layoutWords parenOpen, parenClose :: [TokSymbol] parenOpen =- [ TokSymbol "(" 16- , TokSymbol "[" 46+ [ TokSymbol "(" 17+ , TokSymbol "[" 49 ] parenClose =- [ TokSymbol ")" 17- , TokSymbol "]" 49+ [ TokSymbol ")" 18+ , TokSymbol "]" 52 ] -- | Report an error during layout resolution.@@ -74,7 +74,7 @@ res Nothing [if topLayout then Implicit topDelim Definitive 1 else Explicit] where topDelim :: LayoutDelimiters- topDelim = LayoutDelimiters (TokSymbol ";" 32) Nothing Nothing+ topDelim = LayoutDelimiters (TokSymbol ";" 34) Nothing Nothing res :: Maybe Token -- ^ The previous token, if any. -> [Block] -- ^ A stack of layout blocks.
src/Language/Rzk/Syntax/Lex.hs view
@@ -1,8 +1,11 @@-{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-}+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}+{-# OPTIONS_GHC -fno-warn-tabs #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# LANGUAGE CPP #-} {-# LANGUAGE MagicHash #-}-{-# LINE 4 "Language/Rzk/Syntax/Lex.x" #-}-{-# OPTIONS -fno-warn-incomplete-patterns #-}+{-# LINE 4 "src/Language/Rzk/Syntax/Lex.x" #-}+{-# OPTIONS -Wno-incomplete-patterns #-} {-# OPTIONS_GHC -w #-} {-# LANGUAGE PatternSynonyms #-}@@ -11,45 +14,36 @@ import Prelude +import qualified Data.Text import qualified Data.Bits import Data.Char (ord) import Data.Function (on) import Data.Word (Word8)-#if __GLASGOW_HASKELL__ >= 603 #include "ghcconfig.h"-#elif defined(__GLASGOW_HASKELL__)-#include "config.h"-#endif-#if __GLASGOW_HASKELL__ >= 503-import Data.Array-#else-import Array-#endif-#if __GLASGOW_HASKELL__ >= 503+import qualified Data.Array+import qualified Data.Char import Data.Array.Base (unsafeAt)-import GHC.Exts-#else-import GlaExts-#endif+import GHC.Exts (Addr#,Int#,Int(I#),(*#),(+#),(-#),(==#),(>=#),indexCharOffAddr#,indexInt16OffAddr#,indexInt32OffAddr#,int2Word#,narrow16Int#,narrow32Int#,negateInt#,or#,ord#,uncheckedShiftL#,word2Int#)+import qualified GHC.Exts alex_tab_size :: Int alex_tab_size = 8 alex_base :: AlexAddr alex_base = AlexA#- "\xf8\xff\xff\xff\x91\xff\xff\xff\x93\xff\xff\xff\xa3\xff\xff\xff\x96\xff\xff\xff\x97\xff\xff\xff\x98\xff\xff\xff\x9e\xff\xff\xff\x9d\xff\xff\xff\x9b\xff\xff\xff\x9c\xff\xff\xff\x9a\xff\xff\xff\xa5\xff\xff\xff\xb1\xff\xff\xff\x9f\xff\xff\xff\xaf\xff\xff\xff\xb4\xff\xff\xff\xa4\xff\xff\xff\xae\xff\xff\xff\xbb\xff\xff\xff\xbc\xff\xff\xff\xb3\xff\xff\xff\xb8\xff\xff\xff\xc2\xff\xff\xff\xbd\xff\xff\xff\xc5\xff\xff\xff\xc8\xff\xff\xff\xcb\xff\xff\xff\xc4\xff\xff\xff\xc6\xff\xff\xff\x03\x00\x00\x00\xc3\xff\xff\xff\xca\xff\xff\xff\xcc\xff\xff\xff\xef\x00\x00\x00\xe6\x01\x00\x00\xdd\x02\x00\x00\xd4\x03\x00\x00\x00\x00\x00\x00\xcb\x04\x00\x00\xc2\x05\x00\x00\xb9\x06\x00\x00\xb0\x07\x00\x00\xa7\x08\x00\x00\x0e\x00\x00\x00\x37\x00\x00\x00\x9e\x09\x00\x00\x95\x0a\x00\x00\x8c\x0b\x00\x00\x83\x0c\x00\x00\x7a\x0d\x00\x00\x71\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x0e\x00\x00\x23\x0f\x00\x00\x63\x0f\x00\x00\xe3\x0f\x00\x00\x63\x10\x00\x00\x63\x11\x00\x00\xb6\x11\x00\x00\x89\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x12\x00\x00\x25\x11\x00\x00\xf7\x11\x00\x00\x7a\x13\x00\x00\xfa\x13\x00\x00\xfa\x14\x00\x00\x70\x15\x00\x00\xcf\xff\xff\xff\x10\x00\x00\x00\x00\x00\x00\x00\x66\x16\x00\x00\x66\x17\x00\x00\x67\x17\x00\x00\xe7\x17\x00\x00\xdb\x00\x00\x00\xbb\x14\x00\x00\x28\x18\x00\x00\x99\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x19\x00\x00\x90\x1a\x00\x00\x91\x1a\x00\x00\x11\x1b\x00\x00\x08\x1c\x00\x00\xff\x1c\x00\x00\xc7\xff\xff\xff\xc9\xff\xff\xff\xac\xff\xff\xff\xd0\xff\xff\xff\xa1\xff\xff\xff\x3f\x1d\x00\x00\x80\x1d\x00\x00\xf1\x1d\x00\x00\x00\x00\x00\x00\xcd\xff\xff\xff\xe8\x1e\x00\x00\xd4\xff\xff\xff\xdd\xff\xff\xff\xe7\xff\xff\xff\xe8\xff\xff\xff\xf3\xff\xff\xff\xfb\xff\xff\xff\xe6\xff\xff\xff\xeb\xff\xff\xff\xe9\xff\xff\xff\xef\xff\xff\xff\xf1\xff\xff\xff\xf4\xff\xff\xff\x38\x00\x00\x00\xf0\xff\xff\xff\x04\x00\x00\x00\xf5\xff\xff\xff\xfe\xff\xff\xff\x09\x00\x00\x00\x01\x00\x00\x00\xdf\x1f\x00\x00\x34\x00\x00\x00\x49\x00\x00\x00\x8c\x00\x00\x00\x92\x00\x00\x00\x11\x00\x00\x00\xcf\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x00\x00\x60\x00\x00\x00\x6c\x00\x00\x00\x75\x00\x00\x00\x86\x00\x00\x00\x83\x00\x00\x00\x88\x00\x00\x00\xcd\x00\x00\x00\x9b\x00\x00\x00"#+ "\xf8\xff\xff\xff\x98\xff\xff\xff\xa0\xff\xff\xff\x9a\xff\xff\xff\xf8\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\xff\xff\xa5\xff\xff\xff\xa6\xff\xff\xff\xa2\xff\xff\xff\x9d\xff\xff\xff\xa8\xff\xff\xff\xa1\xff\xff\xff\xac\xff\xff\xff\xe5\xff\xff\xff\xd3\xff\xff\xff\xb8\x01\x00\x00\x91\xff\xff\xff\x85\xff\xff\xff\x7e\xff\xff\xff\x2f\x02\x00\x00\x26\x03\x00\x00\x1d\x04\x00\x00\x14\x05\x00\x00\x71\xff\xff\xff\x54\x05\x00\x00\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x05\x00\x00\x06\x06\x00\x00\x9b\xff\xff\xff\x00\x00\x00\x00\x7f\xff\xff\xff\x7c\xff\xff\xff\x8c\xff\xff\xff\xa3\xff\xff\xff\xb3\xff\xff\xff\xa7\xff\xff\xff\xfd\x06\x00\x00\xad\xff\xff\xff\xbd\xff\xff\xff\xaf\xff\xff\xff\xfd\x01\x00\x00\xf4\x07\x00\x00\xeb\x08\x00\x00\xe2\x09\x00\x00\xd9\x0a\x00\x00\xbf\xff\xff\xff\xcc\xff\xff\xff\xcf\xff\xff\xff\xce\xff\xff\xff\xd1\xff\xff\xff\xd2\xff\xff\xff\xd4\xff\xff\xff\xd7\xff\xff\xff\xdb\xff\xff\xff\xe0\xff\xff\xff\xe1\xff\xff\xff\xe6\xff\xff\xff\xe8\xff\xff\xff\xeb\xff\xff\xff\xee\xff\xff\xff\xef\xff\xff\xff\xf5\xff\xff\xff\xe0\x01\x00\x00\xd0\x0b\x00\x00\xc7\x0c\x00\x00\xbe\x0d\x00\x00\xb5\x0e\x00\x00\xac\x0f\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x0f\x00\x00\xe2\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x11\x00\x00\x94\x11\x00\x00\xd4\x11\x00\x00\xa7\x12\x00\x00\x18\x13\x00\x00\x16\x12\x00\x00\x00\x00\x00\x00\x59\x13\x00\x00\xca\x13\x00\x00\x9d\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x15\x00\x00\x8b\x16\x00\x00\x82\x17\x00\x00\x79\x18\x00\x00\x70\x19\x00\x00\x67\x1a\x00\x00\x5e\x1b\x00\x00\x55\x1c\x00\x00\x4c\x1d\x00\x00\x43\x1e\x00\x00\x3a\x1f\x00\x00\x31\x20\x00\x00\x28\x21\x00\x00\x1f\x22\x00\x00\x16\x23\x00\x00\x0d\x24\x00\x00\xea\xff\xff\xff\x04\x25\x00\x00\xfb\x25\x00\x00\xf2\x26\x00\x00\x00\x00\x00\x00\xe7\xff\xff\xff\xe9\x27\x00\x00\x2c\x00\x00\x00\xf3\xff\xff\xff\x30\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\xe0\x28\x00\x00\x3d\x02\x00\x00\x00\x00\x00\x00\xd6\x29\x00\x00\x1b\x02\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\xfd\xff\xff\xff\xff\xff\xff\xff\xfa\xff\xff\xff\xfc\xff\xff\xff\xf4\xff\xff\xff\xb6\xff\xff\xff\xcd\x2a\x00\x00\xda\xff\xff\xff\xba\xff\xff\xff\xc4\x2b\x00\x00\xbb\x2c\x00\x00\xb2\x2d\x00\x00\xa9\x2e\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x10\x00\x00\x00\xdd\x01\x00\x00\x07\x00\x00\x00\xce\x01\x00\x00\xcf\x01\x00\x00\xd1\x01\x00\x00\xcc\x01\x00\x00\xec\x01\x00\x00\xda\x01\x00\x00\xf4\x01\x00\x00\xe6\x01\x00\x00\xe8\x01\x00\x00\xea\x01\x00\x00\xa9\x2f\x00\x00\x29\x30\x00\x00\x2a\x30\x00\x00\xaa\x30\x00\x00\x2a\x31\x00\x00\xaa\x31\x00\x00\x2a\x32\x00\x00\xaa\x32\x00\x00\x2a\x33\x00\x00\xaa\x33\x00\x00\xfa\x01\x00\x00\xfb\x01\x00\x00"# alex_table :: AlexAddr alex_table = AlexA#- "\x00\x00\x2d\x00\x2d\x00\x2e\x00\x2e\x00\x2d\x00\x02\x00\x03\x00\x1e\x00\x05\x00\x06\x00\x0f\x00\x09\x00\x07\x00\x0a\x00\x0c\x00\x0b\x00\x0d\x00\x0e\x00\x0f\x00\x26\x00\x11\x00\x12\x00\x13\x00\x2d\x00\xff\xff\x4d\x00\x6f\x00\x14\x00\x6a\x00\x15\x00\x16\x00\x26\x00\x26\x00\x29\x00\x18\x00\x26\x00\x4b\x00\xff\xff\x7d\x00\x5e\x00\x2a\x00\x28\x00\x19\x00\x26\x00\x1b\x00\x1c\x00\x20\x00\x73\x00\x70\x00\x2b\x00\x26\x00\x8e\x00\x27\x00\x26\x00\x58\x00\x1d\x00\x21\x00\x26\x00\x3d\x00\x8f\x00\x49\x00\x28\x00\x76\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x28\x00\x28\x00\x26\x00\x26\x00\x28\x00\x6b\x00\x5f\x00\x26\x00\x6c\x00\x26\x00\x8d\x00\x82\x00\x1f\x00\x28\x00\x26\x00\x83\x00\x26\x00\x61\x00\x2d\x00\x8a\x00\x88\x00\x63\x00\x6d\x00\x04\x00\x70\x00\x6e\x00\x71\x00\x7c\x00\x1c\x00\x4a\x00\x74\x00\x76\x00\x75\x00\x72\x00\x17\x00\x78\x00\x77\x00\x2f\x00\x08\x00\x79\x00\x26\x00\x1a\x00\x7b\x00\x7a\x00\x10\x00\x26\x00\x2c\x00\x7f\x00\x26\x00\x7e\x00\x81\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x89\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x87\x00\x84\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x62\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x80\x00\xff\xff\x4d\x00\x26\x00\x69\x00\x28\x00\x28\x00\x4d\x00\x28\x00\x28\x00\x8b\x00\x28\x00\x28\x00\x28\x00\x28\x00\x26\x00\x01\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x28\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\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\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x33\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x68\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x60\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x28\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\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\x2d\x00\x2e\x00\x2e\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x28\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x3c\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x39\x00\x3b\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x38\x00\x3a\x00\x34\x00\x34\x00\x34\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\x39\x00\x3b\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x38\x00\x3a\x00\x34\x00\x34\x00\x34\x00\x37\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x48\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x45\x00\x47\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x44\x00\x46\x00\x40\x00\x40\x00\x40\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x52\x00\x4f\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x53\x00\x50\x00\x57\x00\x57\x00\x57\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x4e\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x55\x00\x4f\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\x56\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x60\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x8c\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x26\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x67\x00\x64\x00\x5b\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x65\x00\x5c\x00\x86\x00\x86\x00\x86\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#+ "\x00\x00\x7b\x00\x7b\x00\x7a\x00\x7a\x00\x7b\x00\x02\x00\x72\x00\x72\x00\x09\x00\x77\x00\x0d\x00\x76\x00\x72\x00\x72\x00\x0f\x00\x72\x00\x72\x00\x7d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x7b\x00\xff\xff\x4e\x00\x43\x00\x6b\x00\x13\x00\x29\x00\x6d\x00\x72\x00\x72\x00\x70\x00\x72\x00\x72\x00\x10\x00\xff\xff\x74\x00\x63\x00\x6f\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x2b\x00\x6d\x00\x32\x00\x71\x00\x72\x00\x2d\x00\x6c\x00\x72\x00\x5d\x00\x6d\x00\x14\x00\x6d\x00\x28\x00\x25\x00\x1a\x00\x6d\x00\x6d\x00\x6d\x00\x08\x00\x35\x00\x3a\x00\x34\x00\x9c\x00\x03\x00\x99\x00\xa7\x00\x80\x00\x39\x00\x41\x00\x23\x00\x40\x00\x6d\x00\x6d\x00\x0a\x00\x9a\x00\x0b\x00\x72\x00\x75\x00\x72\x00\x9b\x00\x61\x00\x95\x00\x37\x00\x72\x00\x72\x00\x8f\x00\x91\x00\x8d\x00\x11\x00\x55\x00\x18\x00\x49\x00\x83\x00\x7f\x00\x0c\x00\xa8\x00\x3d\x00\x42\x00\x84\x00\x44\x00\x15\x00\x87\x00\x16\x00\x93\x00\x88\x00\x72\x00\x01\x00\x38\x00\x79\x00\x78\x00\x72\x00\xa7\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x26\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x24\x00\x1c\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x89\x00\x27\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x92\x00\xff\xff\x4e\x00\x3b\x00\x9a\x00\x94\x00\x36\x00\x4e\x00\x82\x00\x3f\x00\x0e\x00\x7b\x00\x7b\x00\x7b\x00\x7b\x00\x7b\x00\x0d\x00\x90\x00\x96\x00\x49\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x3e\x00\x81\x00\x8e\x00\x97\x00\xff\xff\xff\xff\x98\x00\x3c\x00\xff\xff\xa7\x00\x7b\x00\x85\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x72\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\x4e\x00\xff\xff\xff\xff\xff\xff\x4e\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\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x2a\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\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\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\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\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x6d\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9e\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4d\x00\xa4\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x53\x00\xa3\x00\x4a\x00\x4a\x00\x4a\x00\x52\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9d\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x54\x00\xa6\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x59\x00\xa5\x00\x4f\x00\x4f\x00\x4f\x00\x56\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9d\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x54\x00\xa6\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x59\x00\xa5\x00\x4f\x00\x4f\x00\x4f\x00\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6d\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\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\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\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x21\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x6d\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x48\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x21\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x2c\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x6d\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x72\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7b\x00\x7a\x00\x7a\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\x7b\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x05\x00\x9f\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x20\x00\xa0\x00\x1d\x00\x1d\x00\x1d\x00\x1f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x86\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x89\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x1b\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x57\x00\xa2\x00\x06\x00\x06\x00\x06\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x04\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x9f\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x12\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\xa1\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\x58\x00\xa4\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x4b\x00\x9e\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\xa6\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x50\x00\x9d\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00\x51\x00"# alex_check :: AlexAddr alex_check = AlexA#- "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x75\x00\x74\x00\x65\x00\x73\x00\x73\x00\x6d\x00\x6f\x00\x75\x00\x73\x00\x75\x00\x74\x00\x6c\x00\x61\x00\x74\x00\x65\x00\x61\x00\x72\x00\x69\x00\x20\x00\x21\x00\x22\x00\x23\x00\x61\x00\x65\x00\x62\x00\x6c\x00\x28\x00\x29\x00\x2a\x00\x61\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x6e\x00\x67\x00\x65\x00\x63\x00\x69\x00\x2d\x00\x6e\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6d\x00\x2d\x00\x92\x00\x74\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xa4\x00\xa5\x00\x73\x00\x6b\x00\x82\x00\x63\x00\x82\x00\x66\x00\x65\x00\x3e\x00\x82\x00\x65\x00\x68\x00\xa6\x00\x5b\x00\x5c\x00\x5d\x00\x86\x00\x20\x00\x88\x00\x89\x00\x8a\x00\x68\x00\x61\x00\x6e\x00\x63\x00\x64\x00\x65\x00\x70\x00\x6f\x00\x6f\x00\x74\x00\x2d\x00\x77\x00\x6c\x00\x73\x00\x65\x00\x72\x00\x70\x00\x6e\x00\x64\x00\x73\x00\x6e\x00\x75\x00\x76\x00\x3e\x00\x7b\x00\x7c\x00\x7d\x00\x2d\x00\x66\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\x6e\x00\x69\x00\x0d\x00\x22\x00\x2f\x00\x80\x00\xa3\x00\xa1\x00\x27\x00\x97\x00\xa4\x00\x82\x00\x91\x00\x81\x00\x82\x00\x81\x00\x3d\x00\x70\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xa7\x00\xa8\x00\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\x3c\x00\xff\xff\x3e\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\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\x5b\x00\x5c\x00\x5d\x00\x72\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6c\x00\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\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\x7a\x00\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\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\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\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\x2d\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x2d\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\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\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\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\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\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\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\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\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\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\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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"#+ "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6e\x00\x67\x00\x6e\x00\x74\x00\x65\x00\x6e\x00\x66\x00\x6b\x00\x66\x00\x6e\x00\x64\x00\x3e\x00\x2d\x00\x82\x00\x96\x00\xa4\x00\xa5\x00\x92\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x82\x00\x80\x00\xa3\x00\x28\x00\x29\x00\x2a\x00\x3e\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xa6\x00\xad\x00\xa1\x00\xaf\x00\x82\x00\xa4\x00\x82\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x91\x00\x86\x00\x97\x00\x88\x00\x89\x00\x8a\x00\x81\x00\x82\x00\x81\x00\x75\x00\x73\x00\x75\x00\x73\x00\x73\x00\x6f\x00\x73\x00\x6d\x00\x69\x00\x69\x00\x65\x00\x99\x00\x65\x00\xa7\x00\xa8\x00\x65\x00\x63\x00\x63\x00\x5b\x00\x5c\x00\x5d\x00\x61\x00\x5f\x00\x2d\x00\x6f\x00\x73\x00\x2f\x00\x69\x00\x2d\x00\x66\x00\x2d\x00\x2d\x00\x69\x00\x74\x00\x62\x00\x61\x00\x68\x00\x6c\x00\x68\x00\x6c\x00\x75\x00\x72\x00\xb5\x00\x92\x00\x75\x00\x6f\x00\xb5\x00\x3e\x00\x61\x00\x6e\x00\x7b\x00\x7c\x00\x7d\x00\x6e\x00\x70\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\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\x09\x00\x0a\x00\x3d\x00\x6d\x00\x0d\x00\x22\x00\x72\x00\x70\x00\x6f\x00\x61\x00\x27\x00\x63\x00\x64\x00\x65\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6e\x00\x6c\x00\x61\x00\x74\x00\x20\x00\x70\x00\x22\x00\x23\x00\x73\x00\x77\x00\x75\x00\x76\x00\x28\x00\x29\x00\x65\x00\x74\x00\x2c\x00\x74\x00\x20\x00\x74\x00\x65\x00\x65\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\x7c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\x5b\x00\x5c\x00\x5d\x00\x72\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\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\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x76\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\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\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6c\x00\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\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\x7a\x00\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\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\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\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\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\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\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\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x2d\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\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\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\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\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\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\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x7b\x00\x7c\x00\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\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\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\x3c\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6c\x00\xff\xff\xff\xff\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\x7c\x00\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\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\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\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\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"# alex_deflt :: AlexAddr alex_deflt = AlexA#- "\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\x59\x00\x59\x00\x59\x00\x59\x00\xff\xff\x59\x00\x59\x00\x59\x00\x59\x00\x59\x00\xff\xff\xff\xff\x59\x00\x59\x00\x59\x00\x59\x00\x59\x00\x59\x00\x35\x00\x36\x00\x3d\x00\x35\x00\x36\x00\x3d\x00\xff\xff\xff\xff\x3d\x00\x3d\x00\x3d\x00\xff\xff\x41\x00\x42\x00\x49\x00\x41\x00\x42\x00\x49\x00\xff\xff\xff\xff\x49\x00\x49\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x55\x00\x56\x00\x4d\x00\x55\x00\x56\x00\xff\xff\x59\x00\x59\x00\xff\xff\xff\xff\x59\x00\x59\x00\x59\x00\x67\x00\x59\x00\x67\x00\x59\x00\x59\x00\x67\x00\x85\x00\x59\x00\x67\x00\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\x59\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x59\x00\x67\x00\x85\x00\x59\x00\x59\x00\x59\x00\x59\x00\x59\x00\x67\x00\x59\x00\xff\xff\xff\xff"#+ "\x5e\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7d\x00\x58\x00\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x1e\x00\x07\x00\x1e\x00\x07\x00\x22\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x22\x00\x5e\x00\x5e\x00\x22\x00\x5e\x00\x22\x00\xff\xff\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\xff\xff\x4b\x00\x4c\x00\x4e\x00\x4e\x00\x4e\x00\x50\x00\x51\x00\x55\x00\x4b\x00\x4c\x00\x55\x00\x55\x00\x50\x00\x22\x00\x22\x00\x51\x00\x58\x00\x55\x00\xff\xff\xff\xff\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\xff\xff\x5e\x00\x5e\x00\x5e\x00\xff\xff\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\xff\xff\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x5e\x00\x5e\x00\x22\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\xff\xff\xff\xff\xff\xff\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\x4e\x00\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, 143)+alex_accept = Data.Array.listArray (0 :: Int, 168) [ AlexAccNone , AlexAccNone , AlexAccNone@@ -72,6 +66,10 @@ , AlexAccNone , AlexAccNone , AlexAccNone+ , AlexAcc 48+ , AlexAcc 47+ , AlexAcc 46+ , AlexAcc 45 , AlexAccNone , AlexAccNone , AlexAccNone@@ -80,40 +78,26 @@ , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAcc 28 , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAcc 27- , AlexAcc 26- , AlexAcc 25- , AlexAcc 24- , AlexAcc 23- , AlexAcc 22- , AlexAcc 21- , AlexAcc 20- , AlexAcc 19- , AlexAcc 18- , AlexAcc 17- , AlexAccSkip- , AlexAccSkip- , AlexAcc 16- , AlexAcc 15- , AlexAcc 14- , AlexAcc 13- , AlexAcc 12 , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone+ , AlexAcc 44 , AlexAccNone , AlexAccNone , AlexAccNone+ , AlexAcc 43+ , AlexAcc 42+ , AlexAcc 41+ , AlexAcc 40+ , AlexAcc 39 , AlexAccNone , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAccSkip , AlexAccNone , AlexAccNone , AlexAccNone@@ -123,13 +107,16 @@ , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAccSkip , AlexAccNone , AlexAccNone- , AlexAcc 11 , AlexAccNone , AlexAccNone , AlexAccNone+ , AlexAcc 38+ , AlexAcc 37+ , AlexAcc 36+ , AlexAcc 35+ , AlexAcc 34 , AlexAccNone , AlexAccNone , AlexAccNone@@ -138,13 +125,9 @@ , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAcc 10- , AlexAcc 9 , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAcc 8- , AlexAcc 7 , AlexAccNone , AlexAccNone , AlexAccNone@@ -153,10 +136,40 @@ , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAccNone+ , 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 , AlexAccNone+ , AlexAcc 15+ , AlexAcc 14+ , AlexAcc 13+ , AlexAcc 12+ , AlexAcc 11+ , AlexAcc 10+ , AlexAcc 9+ , AlexAcc 8+ , AlexAcc 7 , AlexAcc 6 , AlexAcc 5+ , AlexAccSkip+ , AlexAccSkip+ , AlexAccSkip+ , AlexAccSkip , AlexAccNone , AlexAccNone , AlexAccNone@@ -166,8 +179,13 @@ , AlexAccNone , AlexAccNone , AlexAccNone+ , AlexAcc 4 , AlexAccNone , AlexAccNone+ , AlexAcc 3+ , AlexAcc 2+ , AlexAcc 1+ , AlexAcc 0 , AlexAccNone , AlexAccNone , AlexAccNone@@ -175,13 +193,9 @@ , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAcc 4 , AlexAccNone- , AlexAcc 3 , AlexAccNone- , AlexAcc 2 , AlexAccNone- , AlexAcc 1 , AlexAccNone , AlexAccNone , AlexAccNone@@ -192,270 +206,67 @@ , AlexAccNone , AlexAccNone , AlexAccNone- , AlexAcc 0 , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone ] -alex_actions = array (0 :: Int, 29)- [ (28,alex_action_3)+alex_actions = Data.Array.array (0 :: Int, 49)+ [ (48,alex_action_4)+ , (47,alex_action_4)+ , (46,alex_action_4)+ , (45,alex_action_4)+ , (44,alex_action_4)+ , (43,alex_action_3)+ , (42,alex_action_4)+ , (41,alex_action_4)+ , (40,alex_action_4)+ , (39,alex_action_4)+ , (38,alex_action_4)+ , (37,alex_action_4)+ , (36,alex_action_4)+ , (35,alex_action_4)+ , (34,alex_action_4)+ , (33,alex_action_7)+ , (32,alex_action_5)+ , (31,alex_action_4)+ , (30,alex_action_4)+ , (29,alex_action_4)+ , (28,alex_action_4) , (27,alex_action_4) , (26,alex_action_4) , (25,alex_action_4) , (24,alex_action_4)- , (23,alex_action_3)- , (22,alex_action_3)- , (21,alex_action_3)- , (20,alex_action_3)- , (19,alex_action_3)- , (18,alex_action_3)+ , (23,alex_action_4)+ , (22,alex_action_4)+ , (21,alex_action_4)+ , (20,alex_action_4)+ , (19,alex_action_4)+ , (18,alex_action_4) , (17,alex_action_3)- , (16,alex_action_4)- , (15,alex_action_4)- , (14,alex_action_4)- , (13,alex_action_4)- , (12,alex_action_4)- , (11,alex_action_7)- , (10,alex_action_5)- , (9,alex_action_4)- , (8,alex_action_4)- , (7,alex_action_4)- , (6,alex_action_4)+ , (16,alex_action_3)+ , (15,alex_action_3)+ , (14,alex_action_3)+ , (13,alex_action_3)+ , (12,alex_action_3)+ , (11,alex_action_3)+ , (10,alex_action_3)+ , (9,alex_action_3)+ , (8,alex_action_3)+ , (7,alex_action_3)+ , (6,alex_action_3) , (5,alex_action_3) , (4,alex_action_4)- , (3,alex_action_3)- , (2,alex_action_3)- , (1,alex_action_3)- , (0,alex_action_3)+ , (3,alex_action_4)+ , (2,alex_action_4)+ , (1,alex_action_4)+ , (0,alex_action_4) ] -{-# LINE 64 "Language/Rzk/Syntax/Lex.x" #-}--- | Create a token with position.-tok :: (String -> Tok) -> (Posn -> String -> Token)-tok f p = PT p . f---- | Token without position.-data Tok- = TK {-# UNPACK #-} !TokSymbol -- ^ Reserved word or symbol.- | TL !String -- ^ String literal.- | TI !String -- ^ Integer literal.- | TV !String -- ^ Identifier.- | TD !String -- ^ Float literal.- | TC !String -- ^ Character literal.- | T_VarIdentToken !String- | T_HoleIdentToken !String- deriving (Eq, Show, Ord)---- | Smart constructor for 'Tok' for the sake of backwards compatibility.-pattern TS :: String -> Int -> Tok-pattern TS t i = TK (TokSymbol t i)---- | Keyword or symbol tokens have a unique ID.-data TokSymbol = TokSymbol- { tsText :: String- -- ^ Keyword or symbol text.- , tsID :: !Int- -- ^ Unique ID.- } deriving (Show)---- | Keyword/symbol equality is determined by the unique ID.-instance Eq TokSymbol where (==) = (==) `on` tsID---- | Keyword/symbol ordering is determined by the unique ID.-instance Ord TokSymbol where compare = compare `on` tsID---- | Token with position.-data Token- = PT Posn Tok- | Err Posn- deriving (Eq, Show, Ord)---- | Pretty print a position.-printPosn :: Posn -> String-printPosn (Pn _ l c) = "line " ++ show l ++ ", column " ++ show c---- | Pretty print the position of the first token in the list.-tokenPos :: [Token] -> String-tokenPos (t:_) = printPosn (tokenPosn t)-tokenPos [] = "end of file"---- | Get the position of a token.-tokenPosn :: Token -> Posn-tokenPosn (PT p _) = p-tokenPosn (Err p) = p---- | Get line and column of a token.-tokenLineCol :: Token -> (Int, Int)-tokenLineCol = posLineCol . tokenPosn---- | Get line and column of a position.-posLineCol :: Posn -> (Int, Int)-posLineCol (Pn _ l c) = (l,c)---- | Convert a token into "position token" form.-mkPosToken :: Token -> ((Int, Int), String)-mkPosToken t = (tokenLineCol t, tokenText t)---- | Convert a token to its text.-tokenText :: Token -> String-tokenText t = case t of- PT _ (TS s _) -> s- PT _ (TL s) -> show s- PT _ (TI s) -> s- PT _ (TV s) -> s- PT _ (TD s) -> s- PT _ (TC s) -> s- Err _ -> "#error"- PT _ (T_VarIdentToken s) -> s- PT _ (T_HoleIdentToken s) -> s---- | Convert a token to a string.-prToken :: Token -> String-prToken t = tokenText t---- | Finite map from text to token organized as binary search tree.-data BTree- = N -- ^ Nil (leaf).- | B String Tok BTree BTree- -- ^ Binary node.- deriving (Show)---- | Convert potential keyword into token or use fallback conversion.-eitherResIdent :: (String -> Tok) -> String -> Tok-eitherResIdent tv s = treeFind resWords- where- treeFind N = tv s- treeFind (B a t left right) =- case compare s a of- LT -> treeFind left- GT -> treeFind right- EQ -> t---- | The keywords and symbols of the language organized as binary search tree.-resWords :: BTree-resWords =- b "BOT" 39- (b "*\8321" 20- (b "#postulate" 10- (b "#compute-whnf" 5- (b "#compute" 3- (b "#check" 2 (b "#assume" 1 N N) N) (b "#compute-nf" 4 N N))- (b "#end" 8 (b "#define" 7 (b "#def" 6 N N) N) (b "#lang" 9 N N)))- (b "#variables" 15- (b "#unset-option" 13- (b "#set-option" 12 (b "#section" 11 N N) N)- (b "#variable" 14 N N))- (b "*" 18 (b ")" 17 (b "(" 16 N N) N) (b "*_1" 19 N N))))- (b ":" 30- (b "0\8322" 25- (b "/\\" 23 (b "->" 22 (b "," 21 N N) N) (b "0_2" 24 N N))- (b "1\8322" 28 (b "1_2" 27 (b "1" 26 N N) N) (b "2" 29 N N)))- (b "=" 35- (b "<" 33 (b ";" 32 (b ":=" 31 N N) N) (b "<=" 34 N N))- (b "=_{" 37 (b "===" 36 N N) (b ">" 38 N N)))))- (b "unit" 59- (b "]" 49- (b "U" 44- (b "TOP" 42 (b "Sigma" 41 (b "CUBE" 40 N N) N) (b "TOPE" 43 N N))- (b "\\" 47 (b "[" 46 (b "Unit" 45 N N) N) (b "\\/" 48 N N)))- (b "recOR" 54- (b "idJ" 52 (b "first" 51 (b "as" 50 N N) N) (b "recBOT" 53 N N))- (b "rzk-1" 57- (b "refl_{" 56 (b "refl" 55 N N) N) (b "second" 58 N N))))- (b "\8594" 69- (b "}" 64- (b "|" 62 (b "{" 61 (b "uses" 60 N N) N) (b "|->" 63 N N))- (b "\960\8321" 67- (b "\931" 66 (b "\215" 65 N N) N) (b "\960\8322" 68 N N)))- (b "\8801" 74- (b "\8743" 72- (b "\8721" 71 (b "\8614" 70 N N) N) (b "\8744" 73 N N))- (b "\8868" 76 (b "\8804" 75 N N) (b "\8869" 77 N N)))))- where- b s n = B bs (TS bs n)- where- bs = s---- | Unquote string literal.-unescapeInitTail :: String -> String-unescapeInitTail = id . unesc . tail . id- where- unesc s = case s of- '\\':c:cs | elem c ['\"', '\\', '\''] -> c : unesc cs- '\\':'n':cs -> '\n' : unesc cs- '\\':'t':cs -> '\t' : unesc cs- '\\':'r':cs -> '\r' : unesc cs- '\\':'f':cs -> '\f' : unesc cs- '"':[] -> []- c:cs -> c : unesc cs- _ -> []------------------------------------------------------------------------ Alex wrapper code.--- A modified "posn" wrapper.----------------------------------------------------------------------data Posn = Pn !Int !Int !Int- deriving (Eq, Show, Ord)--alexStartPos :: Posn-alexStartPos = Pn 0 1 1--alexMove :: Posn -> Char -> Posn-alexMove (Pn a l c) '\t' = Pn (a+1) l (((c+7) `div` 8)*8+1)-alexMove (Pn a l c) '\n' = Pn (a+1) (l+1) 1-alexMove (Pn a l c) _ = Pn (a+1) l (c+1)--type Byte = Word8--type AlexInput = (Posn, -- current position,- Char, -- previous char- [Byte], -- pending bytes on the current char- String) -- current input string--tokens :: String -> [Token]-tokens str = go (alexStartPos, '\n', [], str)- where- go :: AlexInput -> [Token]- go inp@(pos, _, _, str) =- case alexScan inp 0 of- AlexEOF -> []- AlexError (pos, _, _, _) -> [Err pos]- AlexSkip inp' len -> go inp'- AlexToken inp' len act -> act pos (take len str) : (go inp')--alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)-alexGetByte (p, c, (b:bs), s) = Just (b, (p, c, bs, s))-alexGetByte (p, _, [], s) =- case s of- [] -> Nothing- (c:s) ->- let p' = alexMove p c- (b:bs) = utf8Encode c- in p' `seq` Just (b, (p', c, bs, s))--alexInputPrevChar :: AlexInput -> Char-alexInputPrevChar (p, c, bs, s) = c---- | Encode a Haskell String to a list of Word8 values, in UTF8 format.-utf8Encode :: Char -> [Word8]-utf8Encode = map fromIntegral . go . ord- where- go oc- | oc <= 0x7f = [oc]-- | oc <= 0x7ff = [ 0xc0 + (oc `Data.Bits.shiftR` 6)- , 0x80 + oc Data.Bits..&. 0x3f- ]-- | oc <= 0xffff = [ 0xe0 + (oc `Data.Bits.shiftR` 12)- , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)- , 0x80 + oc Data.Bits..&. 0x3f- ]- | otherwise = [ 0xf0 + (oc `Data.Bits.shiftR` 18)- , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)- , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)- , 0x80 + oc Data.Bits..&. 0x3f- ] alex_action_3 = tok (eitherResIdent TV) alex_action_4 = tok (eitherResIdent T_VarIdentToken) alex_action_5 = tok (eitherResIdent T_HoleIdentToken)@@ -479,12 +290,16 @@ # define FAST_INT Int# -- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex. # if __GLASGOW_HASKELL__ > 706-# define GTE(n,m) (tagToEnum# (n >=# m))-# define EQ(n,m) (tagToEnum# (n ==# m))+# define CMP_GEQ(n,m) (((n) >=# (m)) :: Int#)+# define CMP_EQ(n,m) (((n) ==# (m)) :: Int#)+# define CMP_MKBOOL(x) ((GHC.Exts.tagToEnum# (x)) :: Bool) # else-# define GTE(n,m) (n >=# m)-# define EQ(n,m) (n ==# m)+# define CMP_GEQ(n,m) (((n) >= (m)) :: Bool)+# define CMP_EQ(n,m) (((n) == (m)) :: Bool)+# define CMP_MKBOOL(x) ((x) :: Bool) # endif+# define GTE(n,m) CMP_MKBOOL(CMP_GEQ(n,m))+# define EQ(n,m) CMP_MKBOOL(CMP_EQ(n,m)) # define PLUS(n,m) (n +# m) # define MINUS(n,m) (n -# m) # define TIMES(n,m) (n *# m)@@ -506,65 +321,47 @@ #ifdef ALEX_GHC data AlexAddr = AlexA# Addr# -- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ < 503-uncheckedShiftL# = shiftL#-#endif {-# INLINE alexIndexInt16OffAddr #-} alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt16OffAddr (AlexA# arr) off =-#ifdef WORDS_BIGENDIAN- narrow16Int# i- where- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- low = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 2#-#else #if __GLASGOW_HASKELL__ >= 901- int16ToInt#+ GHC.Exts.int16ToInt# -- qualified import because it doesn't exist on older GHC's #endif- (indexInt16OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+ (GHC.Exts.word16ToInt16# (GHC.Exts.wordToWord16# (GHC.Exts.byteSwap16# (GHC.Exts.word16ToWord# (GHC.Exts.int16ToWord16# #endif+ (indexInt16OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+ )))))+#endif #else-alexIndexInt16OffAddr arr off = arr ! off+alexIndexInt16OffAddr = (Data.Array.!) #endif #ifdef ALEX_GHC {-# INLINE alexIndexInt32OffAddr #-} alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt32OffAddr (AlexA# arr) off =-#ifdef WORDS_BIGENDIAN- narrow32Int# i- where- i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`- (b2 `uncheckedShiftL#` 16#) `or#`- (b1 `uncheckedShiftL#` 8#) `or#` b0)- b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))- b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))- b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- b0 = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 4#-#else #if __GLASGOW_HASKELL__ >= 901- int32ToInt#+ GHC.Exts.int32ToInt# -- qualified import because it doesn't exist on older GHC's #endif- (indexInt32OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+ (GHC.Exts.word32ToInt32# (GHC.Exts.wordToWord32# (GHC.Exts.byteSwap32# (GHC.Exts.word32ToWord# (GHC.Exts.int32ToWord32# #endif+ (indexInt32OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+ )))))+#endif #else-alexIndexInt32OffAddr arr off = arr ! off+alexIndexInt32OffAddr = (Data.Array.!) #endif #ifdef ALEX_GHC--#if __GLASGOW_HASKELL__ < 503-quickIndex arr i = arr ! i-#else -- GHC >= 503, unsafeAt is available from Data.Array.Base. quickIndex = unsafeAt-#endif #else-quickIndex arr i = arr ! i+quickIndex = (Data.Array.!) #endif -- -----------------------------------------------------------------------------@@ -578,34 +375,39 @@ -- alexScan :: AlexInput -> StartCode -> AlexReturn a alexScan input__ IBOX(sc)- = alexScanUser undefined input__ IBOX(sc)+ = alexScanUser (error "alex rule requiring context was invoked by alexScan; use alexScanUser instead?") input__ IBOX(sc) +-- If the generated alexScan/alexScanUser functions are called multiple times+-- in the same file, alexScanUser gets broken out into a separate function and+-- increases memory usage. Make sure GHC inlines this function and optimizes it.+{-# INLINE alexScanUser #-}+ alexScanUser user__ input__ IBOX(sc) = case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of (AlexNone, input__') -> case alexGetByte input__ of Nothing -> #ifdef ALEX_DEBUG- trace ("End of input.") $+ Debug.Trace.trace ("End of input.") $ #endif AlexEOF Just _ -> #ifdef ALEX_DEBUG- trace ("Error.") $+ Debug.Trace.trace ("Error.") $ #endif AlexError input__' (AlexLastSkip input__'' len, _) -> #ifdef ALEX_DEBUG- trace ("Skipping.") $+ Debug.Trace.trace ("Skipping.") $ #endif AlexSkip input__'' len (AlexLastAcc k input__''' len, _) -> #ifdef ALEX_DEBUG- trace ("Accept.") $+ Debug.Trace.trace ("Accept.") $ #endif- AlexToken input__''' len (alex_actions ! k)+ AlexToken input__''' len ((Data.Array.!) alex_actions k) -- Push the input through the DFA, remembering the most recent accepting@@ -621,15 +423,16 @@ Nothing -> (new_acc, input__) Just (c, new_input) -> #ifdef ALEX_DEBUG- trace ("State: " ++ show IBOX(s) ++ ", char: " ++ show c) $+ Debug.Trace.trace ("State: " ++ show IBOX(s) ++ ", char: " ++ show c ++ " " ++ (show . Data.Char.chr . fromIntegral) c) $ #endif case fromIntegral c of { IBOX(ord_c) -> let base = alexIndexInt32OffAddr alex_base s offset = PLUS(base,ord_c)- check = alexIndexInt16OffAddr alex_check offset - new_s = if GTE(offset,ILIT(0)) && EQ(check,ord_c)+ new_s = if GTE(offset,ILIT(0))+ && let check = alexIndexInt16OffAddr alex_check offset+ in EQ(check,ord_c) then alexIndexInt16OffAddr alex_table offset else alexIndexInt16OffAddr alex_deflt s in@@ -691,7 +494,7 @@ alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__) --alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _-alexPrevCharIsOneOf arr _ input__ _ _ = arr ! alexInputPrevChar input__+alexPrevCharIsOneOf arr _ input__ _ _ = arr Data.Array.! alexInputPrevChar input__ --alexRightContext :: Int -> AlexAccPred _ alexRightContext IBOX(sc) user__ _ _ input__ =@@ -702,3 +505,253 @@ -- match when checking the right context, just -- the first match will do. #endif+{-# LINE 65 "src/Language/Rzk/Syntax/Lex.x" #-}+-- | Create a token with position.+tok :: (Data.Text.Text -> Tok) -> (Posn -> Data.Text.Text -> Token)+tok f p = PT p . f++-- | Token without position.+data Tok+ = TK {-# UNPACK #-} !TokSymbol -- ^ Reserved word or symbol.+ | TL !Data.Text.Text -- ^ String literal.+ | TI !Data.Text.Text -- ^ Integer literal.+ | TV !Data.Text.Text -- ^ Identifier.+ | TD !Data.Text.Text -- ^ Float literal.+ | TC !Data.Text.Text -- ^ Character literal.+ | T_VarIdentToken !Data.Text.Text+ | T_HoleIdentToken !Data.Text.Text+ deriving (Eq, Show, Ord)++-- | Smart constructor for 'Tok' for the sake of backwards compatibility.+pattern TS :: Data.Text.Text -> Int -> Tok+pattern TS t i = TK (TokSymbol t i)++-- | Keyword or symbol tokens have a unique ID.+data TokSymbol = TokSymbol+ { tsText :: Data.Text.Text+ -- ^ Keyword or symbol text.+ , tsID :: !Int+ -- ^ Unique ID.+ } deriving (Show)++-- | Keyword/symbol equality is determined by the unique ID.+instance Eq TokSymbol where (==) = (==) `on` tsID++-- | Keyword/symbol ordering is determined by the unique ID.+instance Ord TokSymbol where compare = compare `on` tsID++-- | Token with position.+data Token+ = PT Posn Tok+ | Err Posn+ deriving (Eq, Show, Ord)++-- | Pretty print a position.+printPosn :: Posn -> String+printPosn (Pn _ l c) = "line " ++ show l ++ ", column " ++ show c++-- | Pretty print the position of the first token in the list.+tokenPos :: [Token] -> String+tokenPos (t:_) = printPosn (tokenPosn t)+tokenPos [] = "end of file"++-- | Get the position of a token.+tokenPosn :: Token -> Posn+tokenPosn (PT p _) = p+tokenPosn (Err p) = p++-- | Get line and column of a token.+tokenLineCol :: Token -> (Int, Int)+tokenLineCol = posLineCol . tokenPosn++-- | Get line and column of a position.+posLineCol :: Posn -> (Int, Int)+posLineCol (Pn _ l c) = (l,c)++-- | Convert a token into "position token" form.+mkPosToken :: Token -> ((Int, Int), Data.Text.Text)+mkPosToken t = (tokenLineCol t, tokenText t)++-- | Convert a token to its text.+tokenText :: Token -> Data.Text.Text+tokenText t = case t of+ PT _ (TS s _) -> s+ PT _ (TL s) -> Data.Text.pack (show s)+ PT _ (TI s) -> s+ PT _ (TV s) -> s+ PT _ (TD s) -> s+ PT _ (TC s) -> s+ Err _ -> Data.Text.pack "#error"+ PT _ (T_VarIdentToken s) -> s+ PT _ (T_HoleIdentToken s) -> s++-- | Convert a token to a string.+prToken :: Token -> String+prToken t = Data.Text.unpack (tokenText t)++-- | Finite map from text to token organized as binary search tree.+data BTree+ = N -- ^ Nil (leaf).+ | B Data.Text.Text Tok BTree BTree+ -- ^ Binary node.+ deriving (Show)++-- | Convert potential keyword into token or use fallback conversion.+eitherResIdent :: (Data.Text.Text -> Tok) -> Data.Text.Text -> Tok+eitherResIdent tv s = treeFind resWords+ where+ treeFind N = tv s+ treeFind (B a t left right) =+ case compare s a of+ LT -> treeFind left+ GT -> treeFind right+ EQ -> t++-- | The keywords and symbols of the language organized as binary search tree.+resWords :: BTree+resWords =+ b "\\" 50+ (b "/\\" 25+ (b "#unset-option" 13+ (b "#define" 7+ (b "#compute-nf" 4+ (b "#check" 2 (b "#assume" 1 N N) (b "#compute" 3 N N))+ (b "#def" 6 (b "#compute-whnf" 5 N N) N))+ (b "#postulate" 10+ (b "#lang" 9 (b "#end" 8 N N) N)+ (b "#set-option" 12 (b "#section" 11 N N) N)))+ (b "*" 19+ (b "$extract$" 16+ (b "#variables" 15 (b "#variable" 14 N N) N)+ (b ")" 18 (b "(" 17 N N) N))+ (b "," 22+ (b "*\8321" 21 (b "*_1" 20 N N) N) (b "/" 24 (b "->" 23 N N) N))))+ (b "=" 38+ (b ":" 32+ (b "1_2" 29+ (b "0\8322" 27 (b "0_2" 26 N N) (b "1" 28 N N))+ (b "2" 31 (b "1\8322" 30 N N) N))+ (b "<" 35+ (b ";" 34 (b ":=" 33 N N) N) (b "<|" 37 (b "<=" 36 N N) N)))+ (b "Sigma" 44+ (b ">" 41+ (b "=_{" 40 (b "===" 39 N N) N) (b "CUBE" 43 (b "BOT" 42 N N) N))+ (b "U" 47+ (b "TOPE" 46 (b "TOP" 45 N N) N) (b "[" 49 (b "Unit" 48 N N) N)))))+ (b "uninv_op" 75+ (b "inv_op" 63+ (b "as" 57+ (b "_b" 54+ (b "]" 52 (b "\\/" 51 N N) (b "_#" 53 N N))+ (b "_op" 56 (b "_id" 55 N N) N))+ (b "flip\7506\7510" 60+ (b "flip_op" 59 (b "first" 58 N N) N)+ (b "in" 62 (b "idJ" 61 N N) N)))+ (b "refl" 69+ (b "mod" 66+ (b "let" 65 (b "inv\7506\7510" 64 N N) N)+ (b "recOR" 68 (b "recBOT" 67 N N) N))+ (b "second" 72+ (b "rzk-1" 71 (b "refl_{" 70 N N) N)+ (b "unflip\7506\7510" 74 (b "unflip_op" 73 N N) N))))+ (b "\7506\7510" 88+ (b "|>" 82+ (b "{" 79+ (b "unit" 77 (b "uninv\7506\7510" 76 N N) (b "uses" 78 N N))+ (b "|->" 81 (b "|" 80 N N) N))+ (b "\931" 85+ (b "\215" 84 (b "}" 83 N N) N)+ (b "\960\8322" 87 (b "\960\8321" 86 N N) N)))+ (b "\8801" 94+ (b "\8721" 91+ (b "\8614" 90 (b "\8594" 89 N N) N)+ (b "\8744" 93 (b "\8743" 92 N N) N))+ (b "\8869" 97+ (b "\8868" 96 (b "\8804" 95 N N) N)+ (b "\9839" 99 (b "\9837" 98 N N) N)))))+ where+ b s n = B bs (TS bs n)+ where+ bs = Data.Text.pack s++-- | Unquote string literal.+unescapeInitTail :: Data.Text.Text -> Data.Text.Text+unescapeInitTail = Data.Text.pack . unesc . tail . Data.Text.unpack+ where+ unesc s = case s of+ '\\':c:cs | elem c ['\"', '\\', '\''] -> c : unesc cs+ '\\':'n':cs -> '\n' : unesc cs+ '\\':'t':cs -> '\t' : unesc cs+ '\\':'r':cs -> '\r' : unesc cs+ '\\':'f':cs -> '\f' : unesc cs+ '"':[] -> []+ c:cs -> c : unesc cs+ _ -> []++-------------------------------------------------------------------+-- Alex wrapper code.+-- A modified "posn" wrapper.+-------------------------------------------------------------------++data Posn = Pn !Int !Int !Int+ deriving (Eq, Show, Ord)++alexStartPos :: Posn+alexStartPos = Pn 0 1 1++alexMove :: Posn -> Char -> Posn+alexMove (Pn a l c) '\t' = Pn (a+1) l (((c+7) `div` 8)*8+1)+alexMove (Pn a l c) '\n' = Pn (a+1) (l+1) 1+alexMove (Pn a l c) _ = Pn (a+1) l (c+1)++type Byte = Word8++type AlexInput = (Posn, -- current position,+ Char, -- previous char+ [Byte], -- pending bytes on the current char+ Data.Text.Text) -- current input string++tokens :: Data.Text.Text -> [Token]+tokens str = go (alexStartPos, '\n', [], str)+ where+ go :: AlexInput -> [Token]+ go inp@(pos, _, _, str) =+ case alexScan inp 0 of+ AlexEOF -> []+ AlexError (pos, _, _, _) -> [Err pos]+ AlexSkip inp' len -> go inp'+ AlexToken inp' len act -> act pos (Data.Text.take len str) : (go inp')++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (p, c, (b:bs), s) = Just (b, (p, c, bs, s))+alexGetByte (p, _, [], s) =+ case Data.Text.uncons s of+ Nothing -> Nothing+ Just (c,s) ->+ let p' = alexMove p c+ (b:bs) = utf8Encode c+ in p' `seq` Just (b, (p', c, bs, s))++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (p, c, bs, s) = c++-- | Encode a Haskell String to a list of Word8 values, in UTF8 format.+utf8Encode :: Char -> [Word8]+utf8Encode = map fromIntegral . go . ord+ where+ go oc+ | oc <= 0x7f = [oc]++ | oc <= 0x7ff = [ 0xc0 + (oc `Data.Bits.shiftR` 6)+ , 0x80 + oc Data.Bits..&. 0x3f+ ]++ | oc <= 0xffff = [ 0xe0 + (oc `Data.Bits.shiftR` 12)+ , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)+ , 0x80 + oc Data.Bits..&. 0x3f+ ]+ | otherwise = [ 0xf0 + (oc `Data.Bits.shiftR` 18)+ , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)+ , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)+ , 0x80 + oc Data.Bits..&. 0x3f+ ]
src/Language/Rzk/Syntax/Lex.x view
@@ -1,4 +1,4 @@--- -*- haskell -*- File generated by the BNF Converter (bnfc 2.9.6).+-- -*- haskell -*- File generated by the BNF Converter (bnfc 2.9.6.2). -- Lexer definition for use with Alex 3 {@@ -11,6 +11,7 @@ import Prelude +import qualified Data.Text import qualified Data.Bits import Data.Char (ord) import Data.Function (on)@@ -28,7 +29,7 @@ -- Symbols and non-identifier-like reserved words -@rsyms = \Σ | \π \₁ | \π \₂ | \# "lang" | \; | "rzk" \- "1" | \# "set" \- "option" | \= | \# "unset" \- "option" | \# "check" | \: | \# "compute" | \# "compute" \- "whnf" | \# "compute" \- "nf" | \# "postulate" | \# "assume" | \# "variable" | \# "variables" | \# "section" | \# "end" | \# "define" | \: \= | \# "def" | \( | \) | \, | \| | \{ | \} | \↦ | "1" | \* \₁ | "2" | "0" \₂ | "1" \₂ | \× | \⊤ | \⊥ | \≡ | \≤ | \∧ | \∨ | \→ | \= \_ \{ | \[ | \] | \< | \> | \\ | "refl" \_ \{ | \* | \* \_ "1" | "0" \_ "2" | "1" \_ "2" | \= \= \= | \< \= | \/ \\ | \\ \/ | \- \> | \| \- \> | \∑+@rsyms = \ᵒ \ᵖ | "inv" \ᵒ \ᵖ | "uninv" \ᵒ \ᵖ | "flip" \ᵒ \ᵖ | "unflip" \ᵒ \ᵖ | \Σ | \π \₁ | \π \₂ | \# "lang" | \; | "rzk" \- "1" | \# "set" \- "option" | \= | \# "unset" \- "option" | \# "check" | \: | \# "compute" | \# "compute" \- "whnf" | \# "compute" \- "nf" | \# "postulate" | \# "assume" | \# "variable" | \# "variables" | \# "section" | \# "end" | \# "define" | \: \= | \# "def" | \( | \) | \, | \| | \{ | \} | \↦ | \♭ | \_ "b" | \♯ | \_ \# | \_ "op" | \_ "id" | \/ | "1" | \* \₁ | "2" | "0" \₂ | "1" \₂ | \× | \⊤ | \⊥ | \≡ | \≤ | \∧ | \∨ | \→ | \= \_ \{ | \[ | \] | \< | \> | \\ | \< \| | \| \> | \$ "extract" \$ | "refl" \_ \{ | \* | \* \_ "1" | "0" \_ "2" | "1" \_ "2" | \= \= \= | \< \= | \/ \\ | \\ \/ | \- \> | \| \- \> | \∑ :- @@ -63,28 +64,28 @@ { -- | Create a token with position.-tok :: (String -> Tok) -> (Posn -> String -> Token)+tok :: (Data.Text.Text -> Tok) -> (Posn -> Data.Text.Text -> Token) tok f p = PT p . f -- | Token without position. data Tok = TK {-# UNPACK #-} !TokSymbol -- ^ Reserved word or symbol.- | TL !String -- ^ String literal.- | TI !String -- ^ Integer literal.- | TV !String -- ^ Identifier.- | TD !String -- ^ Float literal.- | TC !String -- ^ Character literal.- | T_VarIdentToken !String- | T_HoleIdentToken !String+ | TL !Data.Text.Text -- ^ String literal.+ | TI !Data.Text.Text -- ^ Integer literal.+ | TV !Data.Text.Text -- ^ Identifier.+ | TD !Data.Text.Text -- ^ Float literal.+ | TC !Data.Text.Text -- ^ Character literal.+ | T_VarIdentToken !Data.Text.Text+ | T_HoleIdentToken !Data.Text.Text deriving (Eq, Show, Ord) -- | Smart constructor for 'Tok' for the sake of backwards compatibility.-pattern TS :: String -> Int -> Tok+pattern TS :: Data.Text.Text -> Int -> Tok pattern TS t i = TK (TokSymbol t i) -- | Keyword or symbol tokens have a unique ID. data TokSymbol = TokSymbol- { tsText :: String+ { tsText :: Data.Text.Text -- ^ Keyword or symbol text. , tsID :: !Int -- ^ Unique ID.@@ -125,35 +126,35 @@ posLineCol (Pn _ l c) = (l,c) -- | Convert a token into "position token" form.-mkPosToken :: Token -> ((Int, Int), String)+mkPosToken :: Token -> ((Int, Int), Data.Text.Text) mkPosToken t = (tokenLineCol t, tokenText t) -- | Convert a token to its text.-tokenText :: Token -> String+tokenText :: Token -> Data.Text.Text tokenText t = case t of PT _ (TS s _) -> s- PT _ (TL s) -> show s+ PT _ (TL s) -> Data.Text.pack (show s) PT _ (TI s) -> s PT _ (TV s) -> s PT _ (TD s) -> s PT _ (TC s) -> s- Err _ -> "#error"+ Err _ -> Data.Text.pack "#error" PT _ (T_VarIdentToken s) -> s PT _ (T_HoleIdentToken s) -> s -- | Convert a token to a string. prToken :: Token -> String-prToken t = tokenText t+prToken t = Data.Text.unpack (tokenText t) -- | Finite map from text to token organized as binary search tree. data BTree = N -- ^ Nil (leaf).- | B String Tok BTree BTree+ | B Data.Text.Text Tok BTree BTree -- ^ Binary node. deriving (Show) -- | Convert potential keyword into token or use fallback conversion.-eitherResIdent :: (String -> Tok) -> String -> Tok+eitherResIdent :: (Data.Text.Text -> Tok) -> Data.Text.Text -> Tok eitherResIdent tv s = treeFind resWords where treeFind N = tv s@@ -166,51 +167,73 @@ -- | The keywords and symbols of the language organized as binary search tree. resWords :: BTree resWords =- b "BOT" 39- (b "*\8321" 20- (b "#postulate" 10- (b "#compute-whnf" 5- (b "#compute" 3- (b "#check" 2 (b "#assume" 1 N N) N) (b "#compute-nf" 4 N N))- (b "#end" 8 (b "#define" 7 (b "#def" 6 N N) N) (b "#lang" 9 N N)))- (b "#variables" 15- (b "#unset-option" 13- (b "#set-option" 12 (b "#section" 11 N N) N)- (b "#variable" 14 N N))- (b "*" 18 (b ")" 17 (b "(" 16 N N) N) (b "*_1" 19 N N))))- (b ":" 30- (b "0\8322" 25- (b "/\\" 23 (b "->" 22 (b "," 21 N N) N) (b "0_2" 24 N N))- (b "1\8322" 28 (b "1_2" 27 (b "1" 26 N N) N) (b "2" 29 N N)))- (b "=" 35- (b "<" 33 (b ";" 32 (b ":=" 31 N N) N) (b "<=" 34 N N))- (b "=_{" 37 (b "===" 36 N N) (b ">" 38 N N)))))- (b "unit" 59- (b "]" 49- (b "U" 44- (b "TOP" 42 (b "Sigma" 41 (b "CUBE" 40 N N) N) (b "TOPE" 43 N N))- (b "\\" 47 (b "[" 46 (b "Unit" 45 N N) N) (b "\\/" 48 N N)))- (b "recOR" 54- (b "idJ" 52 (b "first" 51 (b "as" 50 N N) N) (b "recBOT" 53 N N))- (b "rzk-1" 57- (b "refl_{" 56 (b "refl" 55 N N) N) (b "second" 58 N N))))- (b "\8594" 69- (b "}" 64- (b "|" 62 (b "{" 61 (b "uses" 60 N N) N) (b "|->" 63 N N))- (b "\960\8321" 67- (b "\931" 66 (b "\215" 65 N N) N) (b "\960\8322" 68 N N)))- (b "\8801" 74- (b "\8743" 72- (b "\8721" 71 (b "\8614" 70 N N) N) (b "\8744" 73 N N))- (b "\8868" 76 (b "\8804" 75 N N) (b "\8869" 77 N N)))))+ b "\\" 50+ (b "/\\" 25+ (b "#unset-option" 13+ (b "#define" 7+ (b "#compute-nf" 4+ (b "#check" 2 (b "#assume" 1 N N) (b "#compute" 3 N N))+ (b "#def" 6 (b "#compute-whnf" 5 N N) N))+ (b "#postulate" 10+ (b "#lang" 9 (b "#end" 8 N N) N)+ (b "#set-option" 12 (b "#section" 11 N N) N)))+ (b "*" 19+ (b "$extract$" 16+ (b "#variables" 15 (b "#variable" 14 N N) N)+ (b ")" 18 (b "(" 17 N N) N))+ (b "," 22+ (b "*\8321" 21 (b "*_1" 20 N N) N) (b "/" 24 (b "->" 23 N N) N))))+ (b "=" 38+ (b ":" 32+ (b "1_2" 29+ (b "0\8322" 27 (b "0_2" 26 N N) (b "1" 28 N N))+ (b "2" 31 (b "1\8322" 30 N N) N))+ (b "<" 35+ (b ";" 34 (b ":=" 33 N N) N) (b "<|" 37 (b "<=" 36 N N) N)))+ (b "Sigma" 44+ (b ">" 41+ (b "=_{" 40 (b "===" 39 N N) N) (b "CUBE" 43 (b "BOT" 42 N N) N))+ (b "U" 47+ (b "TOPE" 46 (b "TOP" 45 N N) N) (b "[" 49 (b "Unit" 48 N N) N)))))+ (b "uninv_op" 75+ (b "inv_op" 63+ (b "as" 57+ (b "_b" 54+ (b "]" 52 (b "\\/" 51 N N) (b "_#" 53 N N))+ (b "_op" 56 (b "_id" 55 N N) N))+ (b "flip\7506\7510" 60+ (b "flip_op" 59 (b "first" 58 N N) N)+ (b "in" 62 (b "idJ" 61 N N) N)))+ (b "refl" 69+ (b "mod" 66+ (b "let" 65 (b "inv\7506\7510" 64 N N) N)+ (b "recOR" 68 (b "recBOT" 67 N N) N))+ (b "second" 72+ (b "rzk-1" 71 (b "refl_{" 70 N N) N)+ (b "unflip\7506\7510" 74 (b "unflip_op" 73 N N) N))))+ (b "\7506\7510" 88+ (b "|>" 82+ (b "{" 79+ (b "unit" 77 (b "uninv\7506\7510" 76 N N) (b "uses" 78 N N))+ (b "|->" 81 (b "|" 80 N N) N))+ (b "\931" 85+ (b "\215" 84 (b "}" 83 N N) N)+ (b "\960\8322" 87 (b "\960\8321" 86 N N) N)))+ (b "\8801" 94+ (b "\8721" 91+ (b "\8614" 90 (b "\8594" 89 N N) N)+ (b "\8744" 93 (b "\8743" 92 N N) N))+ (b "\8869" 97+ (b "\8868" 96 (b "\8804" 95 N N) N)+ (b "\9839" 99 (b "\9837" 98 N N) N))))) where b s n = B bs (TS bs n) where- bs = s+ bs = Data.Text.pack s -- | Unquote string literal.-unescapeInitTail :: String -> String-unescapeInitTail = id . unesc . tail . id+unescapeInitTail :: Data.Text.Text -> Data.Text.Text+unescapeInitTail = Data.Text.pack . unesc . tail . Data.Text.unpack where unesc s = case s of '\\':c:cs | elem c ['\"', '\\', '\''] -> c : unesc cs@@ -243,9 +266,9 @@ type AlexInput = (Posn, -- current position, Char, -- previous char [Byte], -- pending bytes on the current char- String) -- current input string+ Data.Text.Text) -- current input string -tokens :: String -> [Token]+tokens :: Data.Text.Text -> [Token] tokens str = go (alexStartPos, '\n', [], str) where go :: AlexInput -> [Token]@@ -254,14 +277,14 @@ AlexEOF -> [] AlexError (pos, _, _, _) -> [Err pos] AlexSkip inp' len -> go inp'- AlexToken inp' len act -> act pos (take len str) : (go inp')+ AlexToken inp' len act -> act pos (Data.Text.take len str) : (go inp') alexGetByte :: AlexInput -> Maybe (Byte,AlexInput) alexGetByte (p, c, (b:bs), s) = Just (b, (p, c, bs, s)) alexGetByte (p, _, [], s) =- case s of- [] -> Nothing- (c:s) ->+ case Data.Text.uncons s of+ Nothing -> Nothing+ Just (c,s) -> let p' = alexMove p c (b:bs) = utf8Encode c in p' `seq` Just (b, (p', c, bs, s))
src/Language/Rzk/Syntax/Par.hs view
@@ -1,2252 +1,3056 @@ {-# OPTIONS_GHC -w #-}-{-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}-#if __GLASGOW_HASKELL__ >= 710-{-# OPTIONS_GHC -XPartialTypeSignatures #-}-#endif-{-# OPTIONS_GHC -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-}-{-# LANGUAGE PatternSynonyms #-}--module Language.Rzk.Syntax.Par- ( happyError- , myLexer- , pModule- , pHoleIdent- , pVarIdent- , pListVarIdent- , pLanguageDecl- , pLanguage- , pCommand- , pListCommand- , pDeclUsedVars- , pSectionName- , pPattern- , pListPattern- , pParam- , pListParam- , pParamDecl- , pRestriction- , pListRestriction- , pTerm7- , pTerm5- , pTerm4- , pTerm3- , pTerm2- , pTerm1- , pTerm6- , pTerm- , pListTerm- ) where--import Prelude--import qualified Language.Rzk.Syntax.Abs-import Language.Rzk.Syntax.Lex-import qualified Data.Array as Happy_Data_Array-import qualified Data.Bits as Bits-import qualified GHC.Exts as Happy_GHC_Exts-import Control.Applicative(Applicative(..))-import Control.Monad (ap)---- parser produced by Happy Version 1.20.1.1--newtype HappyAbsSyn = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = Happy_GHC_Exts.Any-#else-type HappyAny = forall a . a-#endif-newtype HappyWrap29 = HappyWrap29 ((Language.Rzk.Syntax.Abs.BNFC'Position, String))-happyIn29 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, String)) -> (HappyAbsSyn )-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap29 x)-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn ) -> HappyWrap29-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut29 #-}-newtype HappyWrap30 = HappyWrap30 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken))-happyIn30 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken)) -> (HappyAbsSyn )-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap30 x)-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn ) -> HappyWrap30-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut30 #-}-newtype HappyWrap31 = HappyWrap31 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken))-happyIn31 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken)) -> (HappyAbsSyn )-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap31 x)-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn ) -> HappyWrap31-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut31 #-}-newtype HappyWrap32 = HappyWrap32 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module))-happyIn32 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module)) -> (HappyAbsSyn )-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap32 x)-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn ) -> HappyWrap32-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut32 #-}-newtype HappyWrap33 = HappyWrap33 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent))-happyIn33 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent)) -> (HappyAbsSyn )-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap33 x)-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn ) -> HappyWrap33-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut33 #-}-newtype HappyWrap34 = HappyWrap34 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent))-happyIn34 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent)) -> (HappyAbsSyn )-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap34 x)-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn ) -> HappyWrap34-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut34 #-}-newtype HappyWrap35 = HappyWrap35 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]))-happyIn35 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent])) -> (HappyAbsSyn )-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap35 x)-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn ) -> HappyWrap35-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut35 #-}-newtype HappyWrap36 = HappyWrap36 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl))-happyIn36 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl)) -> (HappyAbsSyn )-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap36 x)-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn ) -> HappyWrap36-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut36 #-}-newtype HappyWrap37 = HappyWrap37 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language))-happyIn37 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language)) -> (HappyAbsSyn )-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap37 x)-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn ) -> HappyWrap37-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut37 #-}-newtype HappyWrap38 = HappyWrap38 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command))-happyIn38 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command)) -> (HappyAbsSyn )-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap38 x)-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn ) -> HappyWrap38-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut38 #-}-newtype HappyWrap39 = HappyWrap39 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]))-happyIn39 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command])) -> (HappyAbsSyn )-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap39 x)-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn ) -> HappyWrap39-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut39 #-}-newtype HappyWrap40 = HappyWrap40 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars))-happyIn40 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars)) -> (HappyAbsSyn )-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap40 x)-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn ) -> HappyWrap40-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut40 #-}-newtype HappyWrap41 = HappyWrap41 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName))-happyIn41 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName)) -> (HappyAbsSyn )-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap41 x)-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn ) -> HappyWrap41-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut41 #-}-newtype HappyWrap42 = HappyWrap42 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))-happyIn42 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap42 x)-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn ) -> HappyWrap42-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut42 #-}-newtype HappyWrap43 = HappyWrap43 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))-happyIn43 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap43 x)-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn ) -> HappyWrap43-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut43 #-}-newtype HappyWrap44 = HappyWrap44 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param))-happyIn44 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param)) -> (HappyAbsSyn )-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap44 x)-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn ) -> HappyWrap44-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut44 #-}-newtype HappyWrap45 = HappyWrap45 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]))-happyIn45 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param])) -> (HappyAbsSyn )-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap45 x)-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn ) -> HappyWrap45-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut45 #-}-newtype HappyWrap46 = HappyWrap46 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl))-happyIn46 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl)) -> (HappyAbsSyn )-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap46 x)-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn ) -> HappyWrap46-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut46 #-}-newtype HappyWrap47 = HappyWrap47 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction))-happyIn47 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction)) -> (HappyAbsSyn )-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap47 x)-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn ) -> HappyWrap47-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut47 #-}-newtype HappyWrap48 = HappyWrap48 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]))-happyIn48 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction])) -> (HappyAbsSyn )-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn ) -> HappyWrap48-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut48 #-}-newtype HappyWrap49 = HappyWrap49 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn49 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn ) -> HappyWrap49-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut49 #-}-newtype HappyWrap50 = HappyWrap50 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn50 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn ) -> HappyWrap50-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut50 #-}-newtype HappyWrap51 = HappyWrap51 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn51 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn ) -> HappyWrap51-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut51 #-}-newtype HappyWrap52 = HappyWrap52 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn52 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn ) -> HappyWrap52-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut52 #-}-newtype HappyWrap53 = HappyWrap53 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn53 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn ) -> HappyWrap53-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut53 #-}-newtype HappyWrap54 = HappyWrap54 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn54 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn ) -> HappyWrap54-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut54 #-}-newtype HappyWrap55 = HappyWrap55 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn55 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn ) -> HappyWrap55-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut55 #-}-newtype HappyWrap56 = HappyWrap56 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn56 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn ) -> HappyWrap56-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut56 #-}-newtype HappyWrap57 = HappyWrap57 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]))-happyIn57 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term])) -> (HappyAbsSyn )-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn ) -> HappyWrap57-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyInTok :: (Token) -> (HappyAbsSyn )-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn ) -> (Token)-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOutTok #-}---happyExpList :: HappyAddr-happyExpList = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xdf\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x7f\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x80\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x02\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x28\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\xa0\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xd8\x83\xdf\x82\x01\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xf6\xc0\x27\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xd8\x83\xdf\x80\x01\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\x60\x0f\x7e\x03\x06\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\x3d\xf8\x0d\x18\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xf6\xe0\x37\x60\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\x60\x0f\x7e\x03\x06\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x00\x00\x00\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\x40\x01\x00\x00\x20\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x10\x00\x00\x00\x00\x00\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\xc6\x8f\x60\x1f\x7c\x02\x00\x6c\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xc6\x8f\x60\x0f\x7e\x0b\x06\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\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0a\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\x3d\xf0\x09\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xd8\x03\x9f\x00\x00\x1b\x00\x00\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\x00\x00\x00\x00\x08\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xd8\x03\x9f\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\x60\x0f\x7c\x02\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x90\xf1\x23\xd8\x07\x9f\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xc6\x8f\x60\x1f\x7c\x02\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\x40\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xf6\xc1\x27\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\x01\x00\x00\x00\x00\x28\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\x10\x00\x00\x00\x00\x80\x00\x00\x08\x00\x00\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\x00\x00\x00\x00\x08\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\x10\x00\x00\x00\x00\x80\x00\x00\x08\x00\x00\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\x00\x00\x00\x00\x08\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\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\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\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\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\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\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x40\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\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\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\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\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xdf\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x08\x00\x00\x00\x00\x02\x00\x20\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\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\x60\x0f\x7e\x03\x06\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\x3d\xf8\x0d\x18\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xf6\xe0\x37\x60\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x08\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\x40\x00\x00\x00\x00\x00\x02\x00\x20\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\x04\x00\x00\x00\x00\x20\x00\x00\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\x10\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\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\x10\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x02\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xf6\xe0\x37\x60\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xd8\x83\xdf\x80\x01\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\x60\x0f\x7e\x03\x06\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\x3d\xf8\x0d\x18\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xf6\xe0\x37\x60\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xd8\x83\xdf\x80\x01\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\x60\x0f\x7e\x03\x06\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\x3d\xf8\x0d\x18\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\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\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\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\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x90\xf1\x23\xd8\x07\x9f\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\x60\x1f\x7c\x02\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x20\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\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\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x10\x00\x00\x00\x0a\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x40\x00\x00\x00\x28\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x01\x00\x00\xa0\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x02\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\x90\xf1\x23\xd8\x83\xdf\x80\x01\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\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\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\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\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\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\x20\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\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\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\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\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\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xc6\x8f\xe0\x2f\x7e\x0b\x27\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\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\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\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\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\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\x40\xc6\x8f\xe0\x2f\x7e\x0b\x27\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfc\x08\xfe\xe2\xb7\x70\xc2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x3f\x82\xbf\xf8\x2d\x9c\xb0\x01\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\x90\xf1\x23\xf8\x8b\xdf\xc2\x09\x1b\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"#--{-# NOINLINE happyExpListPerState #-}-happyExpListPerState st =- token_strs_expected- where token_strs = ["error","%dummy","%start_pModule_internal","%start_pHoleIdent_internal","%start_pVarIdent_internal","%start_pListVarIdent_internal","%start_pLanguageDecl_internal","%start_pLanguage_internal","%start_pCommand_internal","%start_pListCommand_internal","%start_pDeclUsedVars_internal","%start_pSectionName_internal","%start_pPattern_internal","%start_pListPattern_internal","%start_pParam_internal","%start_pListParam_internal","%start_pParamDecl_internal","%start_pRestriction_internal","%start_pListRestriction_internal","%start_pTerm7_internal","%start_pTerm5_internal","%start_pTerm4_internal","%start_pTerm3_internal","%start_pTerm2_internal","%start_pTerm1_internal","%start_pTerm6_internal","%start_pTerm_internal","%start_pListTerm_internal","String","VarIdentToken","HoleIdentToken","Module","HoleIdent","VarIdent","ListVarIdent","LanguageDecl","Language","Command","ListCommand","DeclUsedVars","SectionName","Pattern","ListPattern","Param","ListParam","ParamDecl","Restriction","ListRestriction","Term7","Term5","Term4","Term3","Term2","Term1","Term6","Term","ListTerm","'#assume'","'#check'","'#compute'","'#compute-nf'","'#compute-whnf'","'#def'","'#define'","'#end'","'#lang'","'#postulate'","'#section'","'#set-option'","'#unset-option'","'#variable'","'#variables'","'('","')'","'*'","'*_1'","'*\8321'","','","'->'","'/\\\\'","'0_2'","'0\8322'","'1'","'1_2'","'1\8322'","'2'","':'","':='","';'","'<'","'<='","'='","'==='","'=_{'","'>'","'BOT'","'CUBE'","'Sigma'","'TOP'","'TOPE'","'U'","'Unit'","'['","'\\\\'","'\\\\/'","']'","'as'","'first'","'idJ'","'recBOT'","'recOR'","'refl'","'refl_{'","'rzk-1'","'second'","'unit'","'uses'","'{'","'|'","'|->'","'}'","'\215'","'\931'","'\960\8321'","'\960\8322'","'\8594'","'\8614'","'\8721'","'\8743'","'\8744'","'\8801'","'\8804'","'\8868'","'\8869'","L_quoted","L_VarIdentToken","L_HoleIdentToken","%eof"]- bit_start = st Prelude.* 138- bit_end = (st Prelude.+ 1) Prelude.* 138- read_bit = readArrayBit happyExpList- bits = Prelude.map read_bit [bit_start..bit_end Prelude.- 1]- bits_indexed = Prelude.zip bits [0..137]- token_strs_expected = Prelude.concatMap f bits_indexed- f (Prelude.False, _) = []- f (Prelude.True, nr) = [token_strs Prelude.!! nr]--happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x06\x00\xc5\xff\xdb\xff\xdb\xff\x4e\x00\x2a\x00\x7d\x07\x7d\x07\x20\x00\x4b\x00\x23\x00\x23\x00\x2c\x00\x2c\x00\x5c\x00\x1e\x00\x1e\x00\x40\x01\x9a\x00\x9a\x00\x9a\x00\x9a\x00\x1e\x00\x9a\x00\x1e\x00\x1e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\x00\x00\x4d\x01\xfc\xff\xd7\xff\xb3\x00\x00\x00\xd8\x00\x8c\x00\x6e\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x40\x01\xb9\x00\x00\x00\xc3\x00\x00\x00\x1e\x00\x40\x01\x00\x00\x24\x00\xdd\x00\x40\x01\x40\x01\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xf1\xff\x1e\x00\x0a\x00\xa6\x00\xa6\x00\x16\x01\xa6\x00\xa6\x00\x54\x00\xa6\x00\xe7\x00\xad\x00\xd1\xff\xad\x00\xad\x00\x16\x01\x00\x00\x00\x00\x2c\x00\xad\x00\xa9\x00\x00\x00\xa9\x00\xad\x00\xa9\x00\xad\x00\xa9\x00\xad\x00\x00\x00\xad\x00\xad\x00\x01\x01\xf7\x00\xd1\x00\xde\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\xde\x00\xde\x00\xde\x00\xde\x00\xde\x00\xe6\x00\xe6\x00\xeb\x00\xeb\x00\xda\x00\xda\x00\x00\x00\xda\x00\xf3\x00\xed\x00\xfe\x00\xfe\x00\xfe\x00\xfe\x00\x7d\x07\x00\x00\x00\x00\x26\x01\x37\x01\x39\x01\x00\x00\x46\x01\x00\x00\x3d\x01\x00\x00\x3d\x01\x3d\x01\x00\x00\x00\x00\x00\x00\x52\x01\x55\x01\x7d\x07\x30\x01\x70\x01\x00\x00\x6a\x01\x88\x00\x89\x01\x00\x00\x00\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x9a\x00\x9a\x00\x9a\x00\x1e\x00\x53\x00\xa9\x00\x00\x00\x00\x00\xa9\x00\x8a\x01\xa9\x00\x00\x00\xe4\xff\x1e\x00\x1e\x00\x00\x00\xfe\xff\xa9\x00\x0b\x00\x31\x02\x1e\x00\x1e\x00\x9a\x00\x9a\x00\x9a\x00\x9a\x00\x9a\x00\x9a\x00\x9a\x00\x9a\x00\x1e\x00\x1e\x00\x00\x00\x00\x00\x19\x00\x19\x00\x19\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\xb4\x01\x1e\x00\x1e\x00\x76\x01\xae\x01\x9c\x00\x1e\x00\x00\x00\xf3\xff\x1e\x00\xb5\x01\xda\x01\xb9\x01\x00\x00\x16\x01\x16\x01\x00\x00\x00\x00\x00\x00\xdd\x01\x1e\x00\xa9\x00\x1e\x00\x08\x02\x00\x00\x1e\x00\x1e\x00\x3f\x00\x61\x00\x7d\x00\xd0\x01\x1e\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x1e\x00\x01\x02\x1e\x00\x03\x02\x1e\x00\x00\x00\x00\x00\x00\x00\xe6\x01\x22\x02\xf2\xff\x00\x00\x9a\x00\x1e\x00\x1e\x00\x0e\x00\x1e\x00\xf4\x01\x1e\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x1e\x00\x19\x02\x1d\x02\x71\x00\x33\x02\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x34\x02\x32\x02\x35\x02\x00\x00\x3d\x02\x1e\x00\x00\x00\x48\x02\x49\x02\x00\x00\x00\x00\x1e\x00\x00\x00\x1e\x00\x46\x02\x1e\x00\x4b\x02\x1e\x00\x00\x00\x1e\x00\x00\x00\x4c\x02\x1e\x00\x51\x02\x1e\x00\x3f\x02\x6f\x02\x76\x02\x7b\x02\x56\x02\x53\x02\x1e\x00\x1e\x00\x90\x02\x95\x02\x00\x00\x1e\x00\x9c\x02\xa1\x02\x1e\x00\x00\x00\x1e\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\x1e\x00\x1e\x00\x00\x00\xa7\x02\xba\x02\x00\x00\x00\x00\x1e\x00\xb7\x02\x1e\x00\xc6\x02\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\xdc\x00\x7c\x00\x13\x01\xa1\x00\xd3\x02\xd5\x02\xd2\x02\x81\x00\xd1\x02\x80\x00\xfc\x00\x15\x00\x14\x01\xbb\x00\xdc\x06\xfb\x01\xaf\x01\x34\x01\xf0\x06\x06\x01\xb7\x06\x81\x06\xd7\x05\x90\x01\x16\x02\x85\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\x7f\x01\x00\x00\x00\x00\x21\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x01\xaa\x01\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x02\x40\x07\x00\x00\x3a\x01\x00\x00\x46\x07\x4d\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x07\x47\x02\x00\x00\x00\x00\x00\x00\x54\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x07\x00\x00\x00\x00\x56\x07\x00\x00\x11\x01\x00\x00\x51\x01\x00\x00\x1b\x02\x00\x00\x67\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x62\x02\x6d\x02\x88\x02\x93\x02\x44\x01\x5f\x01\xcc\x01\x7d\x01\xf2\x01\xde\x02\xe2\x02\xa8\x01\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x02\xcf\x01\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\xdb\x02\x00\x00\xdc\x02\xe6\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\xf5\x01\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\x00\x00\x00\x00\xca\x01\xae\x02\xb9\x02\xd5\x01\x2c\x07\x39\x07\x88\x06\xd4\x02\x00\x00\x68\x02\x00\x00\x00\x00\x8d\x02\x00\x00\x8e\x02\x00\x00\x00\x00\xf0\x01\xdf\x02\x00\x00\x00\x00\xb3\x02\x00\x00\x00\x00\xa1\x01\xf1\x05\x8f\x06\xa9\x06\xce\x06\xd5\x06\xfe\x06\x0b\x07\x15\x07\x22\x07\xfb\x05\x15\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\xfa\x02\x05\x03\x20\x03\x2b\x03\x00\x00\x1f\x06\x39\x06\x00\x00\x00\x00\x00\x00\x46\x03\x00\x00\x00\x00\x51\x03\x00\x00\x00\x00\x00\x00\x00\x00\x54\x07\x54\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x03\xb4\x02\x77\x03\x00\x00\x00\x00\x92\x03\x9d\x03\x5d\x07\x66\x07\x6d\x07\xf2\x02\xb8\x03\xc3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\xe9\x03\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x06\x0f\x04\x2a\x04\x00\x00\x35\x04\x00\x00\x50\x04\x00\x00\x5b\x04\x00\x00\x00\x00\x76\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x04\x00\x00\xc2\x04\x00\x00\xcd\x04\x00\x00\xe8\x04\x00\x00\xf3\x04\x00\x00\x00\x00\x0e\x05\x00\x00\x19\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x05\x3f\x05\x00\x00\x00\x00\x00\x00\x43\x06\x00\x00\x00\x00\x5a\x05\x00\x00\x5d\x06\x67\x06\x00\x00\x00\x00\x00\x00\x65\x05\x00\x00\x80\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x05\xa6\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x05\x00\x00\xcc\x05\x00\x00\x00\x00\x00\x00"#--happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#-happyAdjustOffset off = off--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff\xc7\xff\xc6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xe0\xff\xe1\xff\x9a\xff\x99\xff\x00\x00\x75\xff\x8c\xff\x88\xff\x85\xff\x7e\xff\x71\xff\x90\xff\x70\xff\x00\x00\x00\x00\x97\xff\xab\xff\x96\xff\xa9\xff\xac\xff\x95\xff\xa8\xff\xaa\xff\x00\x00\x93\xff\xae\xff\x00\x00\x94\xff\xad\xff\xaf\xff\xa2\xff\x00\x00\x00\x00\x00\x00\xa5\xff\x00\x00\x9e\xff\x00\x00\x00\x00\x9f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xff\xa6\xff\xe4\xff\xe3\xff\x00\x00\x00\x00\x00\x00\x7e\xff\x00\x00\x00\x00\x90\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xc3\xff\xbf\xff\xbb\xff\x00\x00\x00\x00\xc4\xff\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00\x00\x00\xc5\xff\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\xff\x00\x00\xc6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\xff\x00\x00\x00\x00\xdf\xff\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff\xe2\xff\xde\xff\x00\x00\x00\x00\x00\x00\xda\xff\x00\x00\xd0\xff\xc7\xff\xcf\xff\xc7\xff\xc7\xff\xd7\xff\xd6\xff\xd8\xff\x00\x00\x00\x00\xca\xff\x00\x00\x00\x00\xc0\xff\x00\x00\xc1\xff\x00\x00\xba\xff\x78\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\xff\x77\xff\x00\x00\x00\x00\x00\x00\x73\xff\x00\x00\x00\x00\x00\x00\x74\xff\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\x7d\xff\x8d\xff\x8e\xff\x8b\xff\x8a\xff\x89\xff\x87\xff\x86\xff\x84\xff\x72\xff\x6f\xff\x98\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\x91\xff\x8f\xff\xb0\xff\xb3\xff\xb2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\xff\xd1\xff\xd2\xff\xdb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xd3\xff\xc8\xff\x00\x00\x00\x00\x00\x00\x79\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xff\x00\x00\x7f\xff\x7b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\xff\xb8\xff\x00\x00\x92\xff\xa1\xff\x00\x00\x00\x00\x00\x00\x9c\xff\x00\x00\x00\x00\xb6\xff\x00\x00\x00\x00\x81\xff\xbe\xff\x00\x00\xc2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\x00\x00\xd5\xff\x00\x00\x00\x00\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\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb4\xff\x00\x00\x00\x00\xbd\xff\xbc\xff\xcb\xff\x00\x00\xcd\xff\x00\x00\xce\xff\xcc\xff\x7a\xff\x82\xff\x00\x00\x00\x00\x00\x00\x7c\xff\x00\x00\x00\x00\xb5\xff\xa3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9b\xff"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x10\x00\x1e\x00\x11\x00\x13\x00\x14\x00\x16\x00\x30\x00\x15\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x09\x00\x3f\x00\x1e\x00\x21\x00\x17\x00\x16\x00\x50\x00\x01\x00\x46\x00\x27\x00\x28\x00\x05\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x49\x00\x16\x00\x0d\x00\x0e\x00\x40\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x4f\x00\x12\x00\x3b\x00\x23\x00\x10\x00\x25\x00\x3e\x00\x13\x00\x14\x00\x10\x00\x10\x00\x45\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x10\x00\x4c\x00\x4d\x00\x21\x00\x4f\x00\x50\x00\x51\x00\x45\x00\x48\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x3e\x00\x2f\x00\x40\x00\x10\x00\x45\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x09\x00\x3a\x00\x3b\x00\x41\x00\x3d\x00\x3c\x00\x1e\x00\x3b\x00\x3b\x00\x42\x00\x43\x00\x44\x00\x39\x00\x11\x00\x47\x00\x12\x00\x3b\x00\x15\x00\x3d\x00\x4c\x00\x4d\x00\x10\x00\x4f\x00\x50\x00\x13\x00\x14\x00\x10\x00\x4f\x00\x4f\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x3b\x00\x4f\x00\x3d\x00\x21\x00\x02\x00\x1e\x00\x04\x00\x01\x00\x11\x00\x27\x00\x28\x00\x05\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x09\x00\x0a\x00\x0c\x00\x10\x00\x4f\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x41\x00\x3a\x00\x3b\x00\x10\x00\x3d\x00\x4f\x00\x1e\x00\x3b\x00\x15\x00\x3d\x00\x43\x00\x44\x00\x15\x00\x01\x00\x4e\x00\x10\x00\x51\x00\x05\x00\x06\x00\x4c\x00\x4d\x00\x10\x00\x4f\x00\x50\x00\x13\x00\x14\x00\x3e\x00\x4f\x00\x15\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x3b\x00\x10\x00\x3d\x00\x21\x00\x01\x00\x09\x00\x0a\x00\x51\x00\x05\x00\x27\x00\x28\x00\x3b\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x0d\x00\x10\x00\x0f\x00\x10\x00\x4f\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x10\x00\x3a\x00\x3b\x00\x23\x00\x4f\x00\x25\x00\x09\x00\x0a\x00\x3f\x00\x01\x00\x43\x00\x44\x00\x03\x00\x05\x00\x06\x00\x46\x00\x07\x00\x3b\x00\x32\x00\x4c\x00\x4d\x00\x10\x00\x4f\x00\x50\x00\x13\x00\x14\x00\x10\x00\x16\x00\x10\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x01\x00\x51\x00\x4f\x00\x21\x00\x05\x00\x06\x00\x15\x00\x01\x00\x51\x00\x27\x00\x28\x00\x05\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x01\x00\x02\x00\x0d\x00\x04\x00\x05\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x10\x00\x01\x00\x3b\x00\x01\x00\x01\x00\x05\x00\x20\x00\x05\x00\x05\x00\x14\x00\x15\x00\x16\x00\x45\x00\x0d\x00\x0e\x00\x1a\x00\x0d\x00\x51\x00\x0f\x00\x4c\x00\x4d\x00\x10\x00\x4f\x00\x50\x00\x13\x00\x14\x00\x51\x00\x39\x00\x4f\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x4e\x00\x01\x00\x02\x00\x21\x00\x04\x00\x05\x00\x4f\x00\x01\x00\x4f\x00\x27\x00\x28\x00\x05\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x01\x00\x20\x00\x0d\x00\x14\x00\x05\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x51\x00\x10\x00\x3b\x00\x01\x00\x13\x00\x14\x00\x1e\x00\x05\x00\x1e\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x0d\x00\x12\x00\x01\x00\x21\x00\x4c\x00\x4d\x00\x05\x00\x4f\x00\x50\x00\x27\x00\x28\x00\x23\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x01\x00\x22\x00\x1e\x00\x24\x00\x05\x00\x1e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x3c\x00\x0d\x00\x3b\x00\x0f\x00\x10\x00\x01\x00\x4f\x00\x01\x00\x02\x00\x05\x00\x04\x00\x05\x00\x15\x00\x01\x00\x02\x00\x1e\x00\x04\x00\x05\x00\x15\x00\x4c\x00\x4d\x00\x41\x00\x4f\x00\x50\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x11\x00\x4a\x00\x4b\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x01\x00\x02\x00\x14\x00\x04\x00\x05\x00\x1e\x00\x1e\x00\x01\x00\x1a\x00\x01\x00\x02\x00\x05\x00\x04\x00\x05\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x14\x00\x11\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x01\x00\x04\x00\x05\x00\x01\x00\x05\x00\x1e\x00\x1e\x00\x05\x00\x06\x00\x01\x00\x02\x00\x0c\x00\x04\x00\x05\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x01\x00\x04\x00\x05\x00\x01\x00\x05\x00\x1e\x00\x40\x00\x05\x00\x06\x00\x01\x00\x02\x00\x0c\x00\x04\x00\x05\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x12\x00\x31\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x01\x00\x1e\x00\x4e\x00\x1e\x00\x05\x00\x1e\x00\x01\x00\x02\x00\x3e\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0e\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x11\x00\x40\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x26\x00\x04\x00\x05\x00\x11\x00\x26\x00\x11\x00\x11\x00\x15\x00\x15\x00\x01\x00\x02\x00\x15\x00\x04\x00\x05\x00\x11\x00\x11\x00\x1e\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x11\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x1f\x00\x04\x00\x05\x00\x01\x00\x01\x00\x1f\x00\x1f\x00\x05\x00\x05\x00\x01\x00\x02\x00\x1f\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x40\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x15\x00\x04\x00\x05\x00\x01\x00\x01\x00\x15\x00\x3e\x00\x05\x00\x05\x00\x01\x00\x02\x00\x40\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x15\x00\x11\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x15\x00\x04\x00\x05\x00\x01\x00\x01\x00\x15\x00\x40\x00\x05\x00\x05\x00\x01\x00\x02\x00\x15\x00\x04\x00\x05\x00\x11\x00\x0d\x00\x0d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x11\x00\x15\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x11\x00\x04\x00\x05\x00\x07\x00\x09\x00\x0b\x00\x08\x00\x00\x00\x08\x00\x01\x00\x02\x00\x00\x00\x04\x00\x05\x00\x11\x00\x0b\x00\x0b\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\x0b\x00\x00\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\xff\xff\x1a\x00\x14\x00\x15\x00\x16\x00\x17\x00\x11\x00\xff\xff\x1a\x00\x14\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x1a\x00\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x14\x00\x15\x00\xff\xff\xff\xff\x11\x00\xff\xff\x1a\x00\x14\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x1a\x00\x14\x00\x15\x00\xff\xff\xff\xff\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\xff\xff\xff\xff\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\x14\x00\x15\x00\xff\xff\xff\xff\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\xff\xff\xff\xff\x01\x00\x02\x00\x1a\x00\x04\x00\x05\x00\xff\xff\x14\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x1a\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\xff\xff\x14\x00\x01\x00\x02\x00\xff\xff\x04\x00\x05\x00\x1a\x00\x14\x00\x01\x00\x02\x00\x01\x00\x04\x00\x05\x00\x14\x00\x05\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x14\x00\x05\x00\x0d\x00\xff\xff\x0f\x00\x10\x00\x01\x00\x14\x00\xff\xff\x0d\x00\x05\x00\x0f\x00\x10\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x0d\x00\xff\xff\x0f\x00\x10\x00\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\x0f\x00\x10\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x50\x00\xdf\x00\x2a\x01\x2c\x00\x2d\x00\xc6\x00\xbe\x00\xee\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x83\x00\xa5\x00\x0f\x01\x34\x00\xc0\x00\xda\x00\x4d\x00\x1c\x00\xa6\x00\x35\x00\x36\x00\x5e\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xa4\x00\xbf\x00\xd7\x00\x66\x00\x67\x00\xe0\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x4c\x00\xa8\x00\x44\x00\xaa\x00\x2b\x00\xab\x00\x2b\x01\x2c\x00\x2d\x00\x69\x00\xb2\x00\xc7\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x63\x00\x4a\x00\x4b\x00\x34\x00\x4c\x00\x4d\x00\xff\xff\xdb\x00\xc1\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x25\x01\x3c\x00\x26\x01\x63\x00\xd8\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x83\x00\x43\x00\x44\x00\xa9\x00\x45\x00\x6e\x00\x03\x01\x64\x00\x64\x00\x46\x00\x47\x00\x48\x00\x81\x00\xd4\x00\x49\x00\xa8\x00\x64\x00\xd5\x00\x65\x00\x4a\x00\x4b\x00\x2b\x00\x4c\x00\x4d\x00\x2c\x00\x2d\x00\x63\x00\x4c\x00\x4c\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x64\x00\x4c\x00\x65\x00\x34\x00\x1d\x00\x01\x01\x86\x00\x1c\x00\x1c\x01\x35\x00\x36\x00\x6a\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x6e\x00\x6f\x00\x6b\x00\x63\x00\x4c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xa9\x00\x43\x00\x44\x00\x69\x00\x45\x00\x4c\x00\xff\x00\x64\x00\xee\x00\x65\x00\x47\x00\x48\x00\xbc\x00\x1c\x00\x1c\x00\xb9\x00\xff\xff\x83\x00\x84\x00\x4a\x00\x4b\x00\x50\x00\x4c\x00\x4d\x00\x2c\x00\x2d\x00\x1d\x01\x4c\x00\x11\x01\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x64\x00\x69\x00\x65\x00\x34\x00\x1c\x00\x6e\x00\x89\x00\xff\xff\x5e\x00\x35\x00\x36\x00\x64\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x5f\x00\xb6\x00\x60\x00\x61\x00\x4c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xb5\x00\x43\x00\x44\x00\xaa\x00\x4c\x00\xab\x00\x6e\x00\xf0\x00\xa5\x00\x1c\x00\x47\x00\x48\x00\x87\x00\x83\x00\x99\x00\xa6\x00\x88\x00\x64\x00\xbd\x00\x4a\x00\x4b\x00\x50\x00\x4c\x00\x4d\x00\x2c\x00\x2d\x00\xb0\x00\xb9\xff\xad\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x1c\x00\xff\xff\x4c\x00\x34\x00\x83\x00\x8c\x00\xa7\x00\x1c\x00\xff\xff\x35\x00\x36\x00\x5e\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xa4\x00\x1c\x00\x1d\x00\x69\x00\x1e\x00\x1f\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x9c\x00\x1c\x00\x44\x00\x1c\x00\x1c\x00\x5e\x00\x9b\x00\x85\x00\x5e\x00\x21\x00\x22\x00\x55\x00\xb9\xff\x9f\x00\xa0\x00\x53\x00\x5f\x00\xff\xff\x65\x00\x4a\x00\x4b\x00\x50\x00\x4c\x00\x4d\x00\x2c\x00\x2d\x00\xff\xff\x81\x00\x4c\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x1c\x00\x1c\x00\x1d\x00\x34\x00\x1e\x00\x1f\x00\x4c\x00\x1c\x00\x4c\x00\x35\x00\x36\x00\x5e\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xa4\x00\x1c\x00\xfa\x00\xb0\x00\x57\x00\x94\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x50\x00\x44\x00\x1c\x00\x2c\x00\x2d\x00\xf9\x00\x5e\x00\xf8\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x9e\x00\xa8\x00\x1c\x00\x34\x00\x4a\x00\x4b\x00\x93\x00\x4c\x00\x4d\x00\x35\x00\x36\x00\xf7\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x1c\x00\xc2\x00\xf3\x00\xc3\x00\x5e\x00\xf2\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x6e\x00\x5f\x00\x44\x00\x60\x00\xb7\x00\x1c\x00\x4c\x00\x1c\x00\x1d\x00\x91\x00\x1e\x00\x1f\x00\xee\x00\x1c\x00\x1d\x00\xef\x00\x1e\x00\x1f\x00\x13\x01\x4a\x00\x4b\x00\xa9\x00\x4c\x00\x4d\x00\x1c\x00\x1d\x00\xa2\x00\x1e\x00\x1f\x00\x20\x00\xc4\x00\xc5\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1c\x00\x1d\x00\x21\x00\x1e\x00\x1f\x00\xed\x00\xe2\x00\x1c\x00\x4e\x00\x1c\x00\x1d\x00\x8d\x00\x1e\x00\x1f\x00\x1c\x00\x1d\x00\x20\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xd2\x00\xb6\x00\x12\x01\x20\x00\x58\x00\x59\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x5a\x00\x1c\x00\x1d\x00\x1c\x00\x1e\x00\x1f\x00\x1c\x00\x6a\x00\x16\x01\x0d\x01\x83\x00\x8a\x00\x1c\x00\x1d\x00\x92\x00\x1e\x00\x1f\x00\x20\x00\x58\x00\xeb\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x5a\x00\x20\x00\x58\x00\xe8\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x5a\x00\x1c\x00\x1d\x00\x1c\x00\x1e\x00\x1f\x00\x1c\x00\x6a\x00\x0c\x01\x0b\x01\x83\x00\xef\x00\x1c\x00\x1d\x00\x90\x00\x1e\x00\x1f\x00\x20\x00\x58\x00\xdc\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xdd\x00\x20\x00\x5b\x00\x0a\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x5a\x00\x1c\x00\x1d\x00\x06\x01\x1e\x00\x1f\x00\x1c\x00\x33\x01\x1c\x00\x31\x01\x5e\x00\x2f\x01\x1c\x00\x1d\x00\x2d\x01\x1e\x00\x1f\x00\x20\x00\x66\x00\x9d\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x4d\x00\x20\x00\x2c\x01\x23\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xba\x00\x1c\x00\x1d\x00\x1f\x01\x1e\x00\x1f\x00\xd4\x00\x1e\x01\x1b\x01\x41\x01\xd5\x00\x40\x01\x1c\x00\x1d\x00\x3f\x01\x1e\x00\x1f\x00\x20\x00\x3e\x01\xd6\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xb3\x00\x20\x00\x3c\x01\x3b\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xab\x00\x1c\x00\x1d\x00\x38\x01\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x36\x01\x50\x01\x5e\x00\x5e\x00\x1c\x00\x1d\x00\x4e\x01\x1e\x00\x1f\x00\x20\x00\x9c\x00\xe3\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x98\x00\x20\x00\x4c\x01\x4b\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x97\x00\x1c\x00\x1d\x00\x4a\x01\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x49\x01\x47\x01\x5e\x00\x5e\x00\x1c\x00\x1d\x00\x48\x01\x1e\x00\x1f\x00\x20\x00\xe2\x00\xe0\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x96\x00\x20\x00\x44\x01\x43\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x95\x00\x1c\x00\x1d\x00\x57\x01\x1e\x00\x1f\x00\x1c\x00\x1c\x00\x56\x01\x5b\x01\x5e\x00\x5e\x00\x1c\x00\x1d\x00\x5d\x01\x1e\x00\x1f\x00\x20\x00\xd8\x00\x07\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xea\x00\x20\x00\x5c\x01\x5f\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe9\x00\x1c\x00\x1d\x00\x61\x01\x1e\x00\x1f\x00\x81\x00\x7e\x00\x6c\x00\x7f\x00\x8f\x00\x8b\x00\x1c\x00\x1d\x00\x8e\x00\x1e\x00\x1f\x00\x20\x00\xf5\x00\xf4\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe4\x00\x20\x00\xf3\x00\xfc\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xdb\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x19\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x18\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x17\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x16\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x0f\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x0d\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x08\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x06\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x04\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x03\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xfb\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xfa\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x31\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x2f\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x2d\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x27\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x26\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x23\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x21\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x20\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x1f\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x41\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x3c\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x39\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x38\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x36\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x34\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x33\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x4e\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x4c\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x45\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x44\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x54\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x51\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x50\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x59\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x58\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x5d\x01\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x5f\x01\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\x51\x00\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\xd1\x00\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\xc8\x00\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\xc7\x00\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\x14\x01\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\x13\x01\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\x57\x01\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\x53\x01\x27\x00\x20\x00\x00\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x50\x00\x52\x01\x27\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x52\x00\x00\x00\x53\x00\x21\x00\x22\x00\x23\x00\x24\x00\xe5\x00\x00\x00\x53\x00\x21\x00\x22\x00\x23\x00\x24\x00\xd0\x00\x00\x00\x53\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\xcf\x00\x00\x00\x53\x00\x21\x00\x22\x00\x23\x00\x24\x00\x28\x01\x00\x00\x53\x00\x21\x00\x22\x00\x23\x00\x54\x00\x1c\x00\x1d\x00\x53\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x22\x00\x23\x00\xce\x00\x00\x00\x00\x00\x53\x00\x21\x00\x22\x00\x23\x00\xcd\x00\x5c\x00\x00\x00\x53\x00\x21\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x5d\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x21\x00\x56\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x53\x00\x21\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x5d\x00\x21\x00\xcc\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x53\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\xcb\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x53\x00\x1e\x00\x1f\x00\x00\x00\x21\x00\xca\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x53\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\xc9\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x53\x00\x1e\x00\x1f\x00\x00\x00\x21\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\xe7\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x21\x00\x1c\x00\x1d\x00\x00\x00\x1e\x00\x1f\x00\xe6\x00\xb2\x00\x1c\x00\x1d\x00\x1c\x00\x1e\x00\x1f\x00\xae\x00\x5e\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\xad\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\xa1\x00\x1c\x00\xa2\x00\x00\x00\x5f\x00\x5e\x00\x60\x00\x01\x01\x1c\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\xff\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x60\x00\xfd\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\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\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 (26, 144) [- (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)- ]--happy_n_terms = 82 :: Prelude.Int-happy_n_nonterms = 29 :: Prelude.Int--happyReduce_26 = happySpecReduce_1 0# happyReduction_26-happyReduction_26 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn29- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), ((\(PT _ (TL s)) -> s) happy_var_1))- )}--happyReduce_27 = happySpecReduce_1 1# happyReduction_27-happyReduction_27 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn30- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText happy_var_1))- )}--happyReduce_28 = happySpecReduce_1 2# happyReduction_28-happyReduction_28 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn31- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText happy_var_1))- )}--happyReduce_29 = happySpecReduce_2 3# happyReduction_29-happyReduction_29 happy_x_2- happy_x_1- = case happyOut36 happy_x_1 of { (HappyWrap36 happy_var_1) -> - case happyOut39 happy_x_2 of { (HappyWrap39 happy_var_2) -> - happyIn32- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Module (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_30 = happySpecReduce_1 4# happyReduction_30-happyReduction_30 happy_x_1- = case happyOut31 happy_x_1 of { (HappyWrap31 happy_var_1) -> - happyIn33- ((fst happy_var_1, Language.Rzk.Syntax.Abs.HoleIdent (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_31 = happySpecReduce_1 5# happyReduction_31-happyReduction_31 happy_x_1- = case happyOut30 happy_x_1 of { (HappyWrap30 happy_var_1) -> - happyIn34- ((fst happy_var_1, Language.Rzk.Syntax.Abs.VarIdent (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_32 = happySpecReduce_1 6# happyReduction_32-happyReduction_32 happy_x_1- = case happyOut34 happy_x_1 of { (HappyWrap34 happy_var_1) -> - happyIn35- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_33 = happySpecReduce_2 6# happyReduction_33-happyReduction_33 happy_x_2- happy_x_1- = case happyOut34 happy_x_1 of { (HappyWrap34 happy_var_1) -> - case happyOut35 happy_x_2 of { (HappyWrap35 happy_var_2) -> - happyIn35- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_34 = happySpecReduce_3 7# happyReduction_34-happyReduction_34 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut37 happy_x_2 of { (HappyWrap37 happy_var_2) -> - happyIn36- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_35 = happySpecReduce_1 8# happyReduction_35-happyReduction_35 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn37- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_36 = happyReduce 4# 9# happyReduction_36-happyReduction_36 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut29 happy_x_2 of { (HappyWrap29 happy_var_2) -> - case happyOut29 happy_x_4 of { (HappyWrap29 happy_var_4) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_37 = happySpecReduce_2 9# happyReduction_37-happyReduction_37 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut29 happy_x_2 of { (HappyWrap29 happy_var_2) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_38 = happyReduce 4# 9# happyReduction_38-happyReduction_38 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_39 = happySpecReduce_2 9# happyReduction_39-happyReduction_39 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_40 = happySpecReduce_2 9# happyReduction_40-happyReduction_40 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_41 = happySpecReduce_2 9# happyReduction_41-happyReduction_41 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_42 = happyReduce 6# 9# happyReduction_42-happyReduction_42 (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 { happy_var_1 -> - case happyOut34 happy_x_2 of { (HappyWrap34 happy_var_2) -> - case happyOut40 happy_x_3 of { (HappyWrap40 happy_var_3) -> - case happyOut45 happy_x_4 of { (HappyWrap45 happy_var_4) -> - case happyOut56 happy_x_6 of { (HappyWrap56 happy_var_6) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}}--happyReduce_43 = happyReduce 5# 9# happyReduction_43-happyReduction_43 (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 { happy_var_1 -> - case happyOut34 happy_x_2 of { (HappyWrap34 happy_var_2) -> - case happyOut40 happy_x_3 of { (HappyWrap40 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))- ) `HappyStk` happyRest}}}}--happyReduce_44 = happyReduce 4# 9# happyReduction_44-happyReduction_44 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_2 of { (HappyWrap35 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_45 = happyReduce 4# 9# happyReduction_45-happyReduction_45 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut34 happy_x_2 of { (HappyWrap34 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_46 = happyReduce 4# 9# happyReduction_46-happyReduction_46 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_2 of { (HappyWrap35 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_47 = happySpecReduce_2 9# happyReduction_47-happyReduction_47 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { (HappyWrap41 happy_var_2) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_48 = happySpecReduce_2 9# happyReduction_48-happyReduction_48 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { (HappyWrap41 happy_var_2) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_49 = happyReduce 8# 9# happyReduction_49-happyReduction_49 (happy_x_8 `HappyStk`- 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 { happy_var_1 -> - case happyOut34 happy_x_2 of { (HappyWrap34 happy_var_2) -> - case happyOut40 happy_x_3 of { (HappyWrap40 happy_var_3) -> - case happyOut45 happy_x_4 of { (HappyWrap45 happy_var_4) -> - case happyOut56 happy_x_6 of { (HappyWrap56 happy_var_6) -> - case happyOut56 happy_x_8 of { (HappyWrap56 happy_var_8) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))- ) `HappyStk` happyRest}}}}}}--happyReduce_50 = happyReduce 7# 9# happyReduction_50-happyReduction_50 (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 { happy_var_1 -> - case happyOut34 happy_x_2 of { (HappyWrap34 happy_var_2) -> - case happyOut40 happy_x_3 of { (HappyWrap40 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - case happyOut56 happy_x_7 of { (HappyWrap56 happy_var_7) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))- ) `HappyStk` happyRest}}}}}--happyReduce_51 = happyReduce 8# 9# happyReduction_51-happyReduction_51 (happy_x_8 `HappyStk`- 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 { happy_var_1 -> - case happyOut34 happy_x_2 of { (HappyWrap34 happy_var_2) -> - case happyOut40 happy_x_3 of { (HappyWrap40 happy_var_3) -> - case happyOut45 happy_x_4 of { (HappyWrap45 happy_var_4) -> - case happyOut56 happy_x_6 of { (HappyWrap56 happy_var_6) -> - case happyOut56 happy_x_8 of { (HappyWrap56 happy_var_8) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))- ) `HappyStk` happyRest}}}}}}--happyReduce_52 = happyReduce 7# 9# happyReduction_52-happyReduction_52 (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 { happy_var_1 -> - case happyOut34 happy_x_2 of { (HappyWrap34 happy_var_2) -> - case happyOut40 happy_x_3 of { (HappyWrap40 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - case happyOut56 happy_x_7 of { (HappyWrap56 happy_var_7) -> - happyIn38- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))- ) `HappyStk` happyRest}}}}}--happyReduce_53 = happySpecReduce_0 10# happyReduction_53-happyReduction_53 = happyIn39- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])- )--happyReduce_54 = happySpecReduce_3 10# happyReduction_54-happyReduction_54 happy_x_3- happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> - case happyOut39 happy_x_3 of { (HappyWrap39 happy_var_3) -> - happyIn39- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_55 = happyReduce 4# 11# happyReduction_55-happyReduction_55 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { (HappyWrap35 happy_var_3) -> - happyIn40- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))- ) `HappyStk` happyRest}}--happyReduce_56 = happySpecReduce_0 11# happyReduction_56-happyReduction_56 = happyIn40- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition)- )--happyReduce_57 = happySpecReduce_0 12# happyReduction_57-happyReduction_57 = happyIn41- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition)- )--happyReduce_58 = happySpecReduce_1 12# happyReduction_58-happyReduction_58 happy_x_1- = case happyOut34 happy_x_1 of { (HappyWrap34 happy_var_1) -> - happyIn41- ((fst happy_var_1, Language.Rzk.Syntax.Abs.SomeSectionName (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_59 = happySpecReduce_1 13# happyReduction_59-happyReduction_59 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn42- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_60 = happySpecReduce_1 13# happyReduction_60-happyReduction_60 happy_x_1- = case happyOut34 happy_x_1 of { (HappyWrap34 happy_var_1) -> - happyIn42- ((fst happy_var_1, Language.Rzk.Syntax.Abs.PatternVar (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_61 = happyReduce 5# 13# happyReduction_61-happyReduction_61 (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 { happy_var_1 -> - case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> - case happyOut42 happy_x_4 of { (HappyWrap42 happy_var_4) -> - happyIn42- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_62 = happySpecReduce_1 14# happyReduction_62-happyReduction_62 happy_x_1- = case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> - happyIn43- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_63 = happySpecReduce_2 14# happyReduction_63-happyReduction_63 happy_x_2- happy_x_1- = case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> - case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> - happyIn43- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_64 = happySpecReduce_1 15# happyReduction_64-happyReduction_64 happy_x_1- = case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> - happyIn44- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamPattern (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_65 = happyReduce 5# 15# happyReduction_65-happyReduction_65 (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 { happy_var_1 -> - case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn44- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_66 = happyReduce 7# 15# happyReduction_66-happyReduction_66 (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 { happy_var_1 -> - case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - case happyOut56 happy_x_6 of { (HappyWrap56 happy_var_6) -> - happyIn44- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_67 = happyReduce 7# 15# happyReduction_67-happyReduction_67 (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 { happy_var_1 -> - case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - case happyOut56 happy_x_6 of { (HappyWrap56 happy_var_6) -> - happyIn44- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_68 = happySpecReduce_1 16# happyReduction_68-happyReduction_68 happy_x_1- = case happyOut44 happy_x_1 of { (HappyWrap44 happy_var_1) -> - happyIn45- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_69 = happySpecReduce_2 16# happyReduction_69-happyReduction_69 happy_x_2- happy_x_1- = case happyOut44 happy_x_1 of { (HappyWrap44 happy_var_1) -> - case happyOut45 happy_x_2 of { (HappyWrap45 happy_var_2) -> - happyIn45- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_70 = happySpecReduce_1 17# happyReduction_70-happyReduction_70 happy_x_1- = case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> - happyIn46- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamType (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_71 = happyReduce 5# 17# happyReduction_71-happyReduction_71 (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 { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn46- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_72 = happyReduce 7# 17# happyReduction_72-happyReduction_72 (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 { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - case happyOut56 happy_x_6 of { (HappyWrap56 happy_var_6) -> - happyIn46- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_73 = happyReduce 5# 17# happyReduction_73-happyReduction_73 (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 { happy_var_1 -> - case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn46- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermTypeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_74 = happyReduce 9# 17# happyReduction_74-happyReduction_74 (happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- 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 { happy_var_1 -> - case happyOut42 happy_x_3 of { (HappyWrap42 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - case happyOut56 happy_x_8 of { (HappyWrap56 happy_var_8) -> - happyIn46- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_75 = happyReduce 7# 17# happyReduction_75-happyReduction_75 (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 { happy_var_1 -> - case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - case happyOut56 happy_x_6 of { (HappyWrap56 happy_var_6) -> - happyIn46- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.paramVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_76 = happySpecReduce_3 18# happyReduction_76-happyReduction_76 happy_x_3- happy_x_2- happy_x_1- = case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> - case happyOut56 happy_x_3 of { (HappyWrap56 happy_var_3) -> - happyIn47- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_77 = happySpecReduce_3 18# happyReduction_77-happyReduction_77 happy_x_3- happy_x_2- happy_x_1- = case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> - case happyOut56 happy_x_3 of { (HappyWrap56 happy_var_3) -> - happyIn47- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_78 = happySpecReduce_1 19# happyReduction_78-happyReduction_78 happy_x_1- = case happyOut47 happy_x_1 of { (HappyWrap47 happy_var_1) -> - happyIn48- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_79 = happySpecReduce_3 19# happyReduction_79-happyReduction_79 happy_x_3- happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { (HappyWrap47 happy_var_1) -> - case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> - happyIn48- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_80 = happySpecReduce_1 20# happyReduction_80-happyReduction_80 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_81 = happySpecReduce_1 20# happyReduction_81-happyReduction_81 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_82 = happySpecReduce_1 20# happyReduction_82-happyReduction_82 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_83 = happySpecReduce_1 20# happyReduction_83-happyReduction_83 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_84 = happySpecReduce_1 20# happyReduction_84-happyReduction_84 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_85 = happySpecReduce_1 20# happyReduction_85-happyReduction_85 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_86 = happySpecReduce_1 20# happyReduction_86-happyReduction_86 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_87 = happySpecReduce_1 20# happyReduction_87-happyReduction_87 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_88 = happySpecReduce_1 20# happyReduction_88-happyReduction_88 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_89 = happySpecReduce_1 20# happyReduction_89-happyReduction_89 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_90 = happySpecReduce_1 20# happyReduction_90-happyReduction_90 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_91 = happyReduce 4# 20# happyReduction_91-happyReduction_91 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))- ) `HappyStk` happyRest}}--happyReduce_92 = happyReduce 10# 20# happyReduction_92-happyReduction_92 (happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- 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 { happy_var_1 -> - case happyOut56 happy_x_3 of { (HappyWrap56 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - case happyOut56 happy_x_7 of { (HappyWrap56 happy_var_7) -> - case happyOut56 happy_x_9 of { (HappyWrap56 happy_var_9) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOrDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))- ) `HappyStk` happyRest}}}}}--happyReduce_93 = happySpecReduce_1 20# happyReduction_93-happyReduction_93 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_94 = happyReduce 5# 20# happyReduction_94-happyReduction_94 (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 { happy_var_1 -> - case happyOut46 happy_x_2 of { (HappyWrap46 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_95 = happyReduce 5# 20# happyReduction_95-happyReduction_95 (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 { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_96 = happySpecReduce_1 20# happyReduction_96-happyReduction_96 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_97 = happySpecReduce_1 20# happyReduction_97-happyReduction_97 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_98 = happySpecReduce_3 20# happyReduction_98-happyReduction_98 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_99 = happyReduce 5# 20# happyReduction_99-happyReduction_99 (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 { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_100 = happyReduce 14# 20# happyReduction_100-happyReduction_100 (happy_x_14 `HappyStk`- happy_x_13 `HappyStk`- happy_x_12 `HappyStk`- happy_x_11 `HappyStk`- happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- 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 { happy_var_1 -> - case happyOut56 happy_x_3 of { (HappyWrap56 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - case happyOut56 happy_x_7 of { (HappyWrap56 happy_var_7) -> - case happyOut56 happy_x_9 of { (HappyWrap56 happy_var_9) -> - case happyOut56 happy_x_11 of { (HappyWrap56 happy_var_11) -> - case happyOut56 happy_x_13 of { (HappyWrap56 happy_var_13) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13))- ) `HappyStk` happyRest}}}}}}}--happyReduce_101 = happySpecReduce_1 20# happyReduction_101-happyReduction_101 happy_x_1- = case happyOut33 happy_x_1 of { (HappyWrap33 happy_var_1) -> - happyIn49- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_102 = happySpecReduce_1 20# happyReduction_102-happyReduction_102 happy_x_1- = case happyOut34 happy_x_1 of { (HappyWrap34 happy_var_1) -> - happyIn49- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_103 = happySpecReduce_3 20# happyReduction_103-happyReduction_103 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2))- )}}--happyReduce_104 = happySpecReduce_1 20# happyReduction_104-happyReduction_104 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_105 = happySpecReduce_1 20# happyReduction_105-happyReduction_105 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_106 = happySpecReduce_1 20# happyReduction_106-happyReduction_106 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_107 = happySpecReduce_1 20# happyReduction_107-happyReduction_107 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_108 = happySpecReduce_1 20# happyReduction_108-happyReduction_108 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_109 = happyReduce 5# 20# happyReduction_109-happyReduction_109 (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 { happy_var_1 -> - case happyOut46 happy_x_2 of { (HappyWrap46 happy_var_2) -> - case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_110 = happySpecReduce_3 21# happyReduction_110-happyReduction_110 happy_x_3- happy_x_2- happy_x_1- = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> - case happyOut55 happy_x_3 of { (HappyWrap55 happy_var_3) -> - happyIn50- ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_111 = happySpecReduce_1 21# happyReduction_111-happyReduction_111 happy_x_1- = case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> - happyIn50- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_112 = happySpecReduce_3 21# happyReduction_112-happyReduction_112 happy_x_3- happy_x_2- happy_x_1- = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> - case happyOut55 happy_x_3 of { (HappyWrap55 happy_var_3) -> - happyIn50- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_113 = happySpecReduce_3 22# happyReduction_113-happyReduction_113 happy_x_3- happy_x_2- happy_x_1- = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> - case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> - happyIn51- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_114 = happySpecReduce_3 22# happyReduction_114-happyReduction_114 happy_x_3- happy_x_2- happy_x_1- = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> - case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> - happyIn51- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_115 = happySpecReduce_1 22# happyReduction_115-happyReduction_115 happy_x_1- = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> - happyIn51- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_116 = happySpecReduce_3 22# happyReduction_116-happyReduction_116 happy_x_3- happy_x_2- happy_x_1- = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> - case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> - happyIn51- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_117 = happySpecReduce_3 22# happyReduction_117-happyReduction_117 happy_x_3- happy_x_2- happy_x_1- = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> - case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> - happyIn51- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_118 = happySpecReduce_3 23# happyReduction_118-happyReduction_118 happy_x_3- happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> - case happyOut52 happy_x_3 of { (HappyWrap52 happy_var_3) -> - happyIn52- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_119 = happySpecReduce_1 23# happyReduction_119-happyReduction_119 happy_x_1- = case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> - happyIn52- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_120 = happySpecReduce_3 23# happyReduction_120-happyReduction_120 happy_x_3- happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> - case happyOut52 happy_x_3 of { (HappyWrap52 happy_var_3) -> - happyIn52- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_121 = happySpecReduce_3 24# happyReduction_121-happyReduction_121 happy_x_3- happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> - happyIn53- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_122 = happySpecReduce_1 24# happyReduction_122-happyReduction_122 happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - happyIn53- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_123 = happySpecReduce_3 24# happyReduction_123-happyReduction_123 happy_x_3- happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> - happyIn53- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_124 = happySpecReduce_3 25# happyReduction_124-happyReduction_124 happy_x_3- happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { (HappyWrap46 happy_var_1) -> - case happyOut54 happy_x_3 of { (HappyWrap54 happy_var_3) -> - happyIn54- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_125 = happyReduce 8# 25# happyReduction_125-happyReduction_125 (happy_x_8 `HappyStk`- 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 { happy_var_1 -> - case happyOut42 happy_x_3 of { (HappyWrap42 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - case happyOut54 happy_x_8 of { (HappyWrap54 happy_var_8) -> - happyIn54- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_126 = happyReduce 5# 25# happyReduction_126-happyReduction_126 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> - case happyOut56 happy_x_3 of { (HappyWrap56 happy_var_3) -> - case happyOut53 happy_x_5 of { (HappyWrap53 happy_var_5) -> - happyIn54- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeId (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_5))- ) `HappyStk` happyRest}}}--happyReduce_127 = happySpecReduce_3 25# happyReduction_127-happyReduction_127 happy_x_3- happy_x_2- happy_x_1- = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> - case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> - happyIn54- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_128 = happyReduce 4# 25# happyReduction_128-happyReduction_128 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { (HappyWrap45 happy_var_2) -> - case happyOut54 happy_x_4 of { (HappyWrap54 happy_var_4) -> - happyIn54- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_129 = happySpecReduce_1 25# happyReduction_129-happyReduction_129 happy_x_1- = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> - happyIn54- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_130 = happySpecReduce_3 25# happyReduction_130-happyReduction_130 happy_x_3- happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { (HappyWrap46 happy_var_1) -> - case happyOut54 happy_x_3 of { (HappyWrap54 happy_var_3) -> - happyIn54- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_131 = happyReduce 8# 25# happyReduction_131-happyReduction_131 (happy_x_8 `HappyStk`- 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 { happy_var_1 -> - case happyOut42 happy_x_3 of { (HappyWrap42 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - case happyOut54 happy_x_8 of { (HappyWrap54 happy_var_8) -> - happyIn54- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_132 = happyReduce 4# 25# happyReduction_132-happyReduction_132 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { (HappyWrap45 happy_var_2) -> - case happyOut54 happy_x_4 of { (HappyWrap54 happy_var_4) -> - happyIn54- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_133 = happyReduce 8# 25# happyReduction_133-happyReduction_133 (happy_x_8 `HappyStk`- 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 { happy_var_1 -> - case happyOut42 happy_x_3 of { (HappyWrap42 happy_var_3) -> - case happyOut56 happy_x_5 of { (HappyWrap56 happy_var_5) -> - case happyOut54 happy_x_8 of { (HappyWrap54 happy_var_8) -> - happyIn54- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_134 = happyReduce 4# 26# happyReduction_134-happyReduction_134 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> - case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> - happyIn55- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeRestricted (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- ) `HappyStk` happyRest}}--happyReduce_135 = happySpecReduce_2 26# happyReduction_135-happyReduction_135 happy_x_2- happy_x_1- = case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> - case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> - happyIn55- ((fst happy_var_1, Language.Rzk.Syntax.Abs.App (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_136 = happySpecReduce_2 26# happyReduction_136-happyReduction_136 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> - happyIn55- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_137 = happySpecReduce_2 26# happyReduction_137-happyReduction_137 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> - happyIn55- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_138 = happySpecReduce_1 26# happyReduction_138-happyReduction_138 happy_x_1- = case happyOut49 happy_x_1 of { (HappyWrap49 happy_var_1) -> - happyIn55- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_139 = happySpecReduce_2 26# happyReduction_139-happyReduction_139 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> - happyIn55- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_140 = happySpecReduce_2 26# happyReduction_140-happyReduction_140 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> - happyIn55- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_141 = happySpecReduce_3 27# happyReduction_141-happyReduction_141 happy_x_3- happy_x_2- happy_x_1- = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> - case happyOut54 happy_x_3 of { (HappyWrap54 happy_var_3) -> - happyIn56- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeAsc (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_142 = happySpecReduce_1 27# happyReduction_142-happyReduction_142 happy_x_1- = case happyOut54 happy_x_1 of { (HappyWrap54 happy_var_1) -> - happyIn56- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_143 = happySpecReduce_1 28# happyReduction_143-happyReduction_143 happy_x_1- = case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> - happyIn57- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_144 = happySpecReduce_3 28# happyReduction_144-happyReduction_144 happy_x_3- happy_x_2- happy_x_1- = case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> - case happyOut57 happy_x_3 of { (HappyWrap57 happy_var_3) -> - happyIn57- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyNewToken action sts stk [] =- happyDoAction 81# notHappyAtAll action sts stk []--happyNewToken action sts stk (tk:tks) =- let cont i = happyDoAction i tk action sts stk tks in- case tk of {- PT _ (TS _ 1) -> cont 1#;- PT _ (TS _ 2) -> cont 2#;- PT _ (TS _ 3) -> cont 3#;- PT _ (TS _ 4) -> cont 4#;- PT _ (TS _ 5) -> cont 5#;- PT _ (TS _ 6) -> cont 6#;- PT _ (TS _ 7) -> cont 7#;- PT _ (TS _ 8) -> cont 8#;- PT _ (TS _ 9) -> cont 9#;- PT _ (TS _ 10) -> cont 10#;- PT _ (TS _ 11) -> cont 11#;- PT _ (TS _ 12) -> cont 12#;- PT _ (TS _ 13) -> cont 13#;- PT _ (TS _ 14) -> cont 14#;- PT _ (TS _ 15) -> cont 15#;- PT _ (TS _ 16) -> cont 16#;- PT _ (TS _ 17) -> cont 17#;- PT _ (TS _ 18) -> cont 18#;- PT _ (TS _ 19) -> cont 19#;- PT _ (TS _ 20) -> cont 20#;- PT _ (TS _ 21) -> cont 21#;- PT _ (TS _ 22) -> cont 22#;- PT _ (TS _ 23) -> cont 23#;- PT _ (TS _ 24) -> cont 24#;- PT _ (TS _ 25) -> cont 25#;- PT _ (TS _ 26) -> cont 26#;- PT _ (TS _ 27) -> cont 27#;- PT _ (TS _ 28) -> cont 28#;- PT _ (TS _ 29) -> cont 29#;- PT _ (TS _ 30) -> cont 30#;- PT _ (TS _ 31) -> cont 31#;- PT _ (TS _ 32) -> cont 32#;- PT _ (TS _ 33) -> cont 33#;- PT _ (TS _ 34) -> cont 34#;- PT _ (TS _ 35) -> cont 35#;- PT _ (TS _ 36) -> cont 36#;- PT _ (TS _ 37) -> cont 37#;- PT _ (TS _ 38) -> cont 38#;- PT _ (TS _ 39) -> cont 39#;- PT _ (TS _ 40) -> cont 40#;- PT _ (TS _ 41) -> cont 41#;- PT _ (TS _ 42) -> cont 42#;- PT _ (TS _ 43) -> cont 43#;- PT _ (TS _ 44) -> cont 44#;- PT _ (TS _ 45) -> cont 45#;- PT _ (TS _ 46) -> cont 46#;- PT _ (TS _ 47) -> cont 47#;- PT _ (TS _ 48) -> cont 48#;- PT _ (TS _ 49) -> cont 49#;- PT _ (TS _ 50) -> cont 50#;- PT _ (TS _ 51) -> cont 51#;- PT _ (TS _ 52) -> cont 52#;- PT _ (TS _ 53) -> cont 53#;- PT _ (TS _ 54) -> cont 54#;- PT _ (TS _ 55) -> cont 55#;- PT _ (TS _ 56) -> cont 56#;- PT _ (TS _ 57) -> cont 57#;- PT _ (TS _ 58) -> cont 58#;- PT _ (TS _ 59) -> cont 59#;- PT _ (TS _ 60) -> cont 60#;- PT _ (TS _ 61) -> cont 61#;- PT _ (TS _ 62) -> cont 62#;- PT _ (TS _ 63) -> cont 63#;- PT _ (TS _ 64) -> cont 64#;- PT _ (TS _ 65) -> cont 65#;- PT _ (TS _ 66) -> cont 66#;- PT _ (TS _ 67) -> cont 67#;- PT _ (TS _ 68) -> cont 68#;- PT _ (TS _ 69) -> cont 69#;- PT _ (TS _ 70) -> cont 70#;- PT _ (TS _ 71) -> cont 71#;- PT _ (TS _ 72) -> cont 72#;- PT _ (TS _ 73) -> cont 73#;- PT _ (TS _ 74) -> cont 74#;- PT _ (TS _ 75) -> cont 75#;- PT _ (TS _ 76) -> cont 76#;- PT _ (TS _ 77) -> cont 77#;- PT _ (TL _) -> cont 78#;- PT _ (T_VarIdentToken _) -> cont 79#;- PT _ (T_HoleIdentToken _) -> cont 80#;- _ -> happyError' ((tk:tks), [])- }--happyError_ explist 81# tk tks = happyError' (tks, explist)-happyError_ explist _ tk tks = happyError' ((tk:tks), explist)--happyThen :: () => Err a -> (a -> Err b) -> Err b-happyThen = ((>>=))-happyReturn :: () => a -> Err a-happyReturn = (return)-happyThen1 m k tks = ((>>=)) m (\a -> k a tks)-happyReturn1 :: () => a -> b -> Err a-happyReturn1 = \a tks -> (return) a-happyError' :: () => ([(Token)], [Prelude.String]) -> Err a-happyError' = (\(tokens, _) -> happyError tokens)-pModule_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (let {(HappyWrap32 x') = happyOut32 x} in x'))--pHoleIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (let {(HappyWrap33 x') = happyOut33 x} in x'))--pVarIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (let {(HappyWrap34 x') = happyOut34 x} in x'))--pListVarIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (let {(HappyWrap35 x') = happyOut35 x} in x'))--pLanguageDecl_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 4# tks) (\x -> happyReturn (let {(HappyWrap36 x') = happyOut36 x} in x'))--pLanguage_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 5# tks) (\x -> happyReturn (let {(HappyWrap37 x') = happyOut37 x} in x'))--pCommand_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 6# tks) (\x -> happyReturn (let {(HappyWrap38 x') = happyOut38 x} in x'))--pListCommand_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 7# tks) (\x -> happyReturn (let {(HappyWrap39 x') = happyOut39 x} in x'))--pDeclUsedVars_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 8# tks) (\x -> happyReturn (let {(HappyWrap40 x') = happyOut40 x} in x'))--pSectionName_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 9# tks) (\x -> happyReturn (let {(HappyWrap41 x') = happyOut41 x} in x'))--pPattern_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 10# tks) (\x -> happyReturn (let {(HappyWrap42 x') = happyOut42 x} in x'))--pListPattern_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 11# tks) (\x -> happyReturn (let {(HappyWrap43 x') = happyOut43 x} in x'))--pParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 12# tks) (\x -> happyReturn (let {(HappyWrap44 x') = happyOut44 x} in x'))--pListParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 13# tks) (\x -> happyReturn (let {(HappyWrap45 x') = happyOut45 x} in x'))--pParamDecl_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 14# tks) (\x -> happyReturn (let {(HappyWrap46 x') = happyOut46 x} in x'))--pRestriction_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 15# tks) (\x -> happyReturn (let {(HappyWrap47 x') = happyOut47 x} in x'))--pListRestriction_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 16# tks) (\x -> happyReturn (let {(HappyWrap48 x') = happyOut48 x} in x'))--pTerm7_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 17# tks) (\x -> happyReturn (let {(HappyWrap49 x') = happyOut49 x} in x'))--pTerm5_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 18# tks) (\x -> happyReturn (let {(HappyWrap50 x') = happyOut50 x} in x'))--pTerm4_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 19# tks) (\x -> happyReturn (let {(HappyWrap51 x') = happyOut51 x} in x'))--pTerm3_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 20# tks) (\x -> happyReturn (let {(HappyWrap52 x') = happyOut52 x} in x'))--pTerm2_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 21# tks) (\x -> happyReturn (let {(HappyWrap53 x') = happyOut53 x} in x'))--pTerm1_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 22# tks) (\x -> happyReturn (let {(HappyWrap54 x') = happyOut54 x} in x'))--pTerm6_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 23# tks) (\x -> happyReturn (let {(HappyWrap55 x') = happyOut55 x} in x'))--pTerm_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 24# tks) (\x -> happyReturn (let {(HappyWrap56 x') = happyOut56 x} in x'))--pListTerm_internal tks = happySomeParser where- happySomeParser = happyThen (happyParse 25# tks) (\x -> happyReturn (let {(HappyWrap57 x') = happyOut57 x} in x'))--happySeq = happyDontSeq---type Err = Either String--happyError :: [Token] -> Err a-happyError ts = Left $- "syntax error at " ++ tokenPos ts ++- case ts of- [] -> []- [Err _] -> " due to lexer error"- t:_ -> " before `" ++ (prToken t) ++ "'"--myLexer :: String -> [Token]-myLexer = tokens---- Entrypoints--pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module-pModule = fmap snd . pModule_internal--pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent-pHoleIdent = fmap snd . pHoleIdent_internal--pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent-pVarIdent = fmap snd . pVarIdent_internal--pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]-pListVarIdent = fmap snd . pListVarIdent_internal--pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl-pLanguageDecl = fmap snd . pLanguageDecl_internal--pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language-pLanguage = fmap snd . pLanguage_internal--pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command-pCommand = fmap snd . pCommand_internal--pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]-pListCommand = fmap snd . pListCommand_internal--pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars-pDeclUsedVars = fmap snd . pDeclUsedVars_internal--pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName-pSectionName = fmap snd . pSectionName_internal--pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern-pPattern = fmap snd . pPattern_internal--pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]-pListPattern = fmap snd . pListPattern_internal--pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param-pParam = fmap snd . pParam_internal--pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]-pListParam = fmap snd . pListParam_internal--pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl-pParamDecl = fmap snd . pParamDecl_internal--pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction-pRestriction = fmap snd . pRestriction_internal--pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]-pListRestriction = fmap snd . pListRestriction_internal--pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm7 = fmap snd . pTerm7_internal--pTerm5 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm5 = fmap snd . pTerm5_internal--pTerm4 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm4 = fmap snd . pTerm4_internal--pTerm3 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm3 = fmap snd . pTerm3_internal--pTerm2 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm2 = fmap snd . pTerm2_internal--pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm1 = fmap snd . pTerm1_internal--pTerm6 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm6 = fmap snd . pTerm6_internal--pTerm :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm = fmap snd . pTerm_internal--pListTerm :: [Token] -> Err [Language.Rzk.Syntax.Abs.Term]-pListTerm = fmap snd . pListTerm_internal-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $---------------- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ > 706-#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Prelude.Bool)-#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Prelude.Bool)-#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Prelude.Bool)-#else-#define LT(n,m) (n Happy_GHC_Exts.<# m)-#define GTE(n,m) (n Happy_GHC_Exts.>=# m)-#define EQ(n,m) (n Happy_GHC_Exts.==# m)-#endif--------------------data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList-----------------------------------------infixr 9 `HappyStk`-data HappyStk a = HappyStk a (HappyStk a)---------------------------------------------------------------------------------- starting the parse--happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll---------------------------------------------------------------------------------- Accepting the parse---- If the current token is ERROR_TOK, it means we've just accepted a partial--- parse (a %partial parser). We must ignore the saved token on the top of--- the stack in this case.-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =- happyReturn1 ans-happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans)---------------------------------------------------------------------------------- Arrays only: do the next action----happyDoAction i tk st- = {- nothing -}- case action of- 0# -> {- nothing -}- happyFail (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Prelude.Int)) i tk st- -1# -> {- nothing -}- happyAccept i tk st- n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}- (happyReduceArr Happy_Data_Array.! rule) i tk st- where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))- n -> {- nothing -}- happyShift new_state i tk st- where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))- where off = happyAdjustOffset (indexShortOffAddr happyActOffsets st)- off_i = (off Happy_GHC_Exts.+# i)- check = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))- then EQ(indexShortOffAddr happyCheck off_i, i)- else Prelude.False- action- | check = indexShortOffAddr happyTable off_i- | Prelude.otherwise = indexShortOffAddr happyDefActions st-----indexShortOffAddr (HappyA# arr) off =- Happy_GHC_Exts.narrow16Int# i- where- i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)- high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))- low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))- off' = off Happy_GHC_Exts.*# 2#-----{-# INLINE happyLt #-}-happyLt x y = LT(x,y)---readArrayBit arr bit =- Bits.testBit (Happy_GHC_Exts.I# (indexShortOffAddr arr ((unbox_int bit) `Happy_GHC_Exts.iShiftRA#` 4#))) (bit `Prelude.mod` 16)- where unbox_int (Happy_GHC_Exts.I# x) = x-------data HappyAddr = HappyA# Happy_GHC_Exts.Addr#----------------------------------------------------------------------------------- HappyState data type (not arrays)---------------------------------------------------------------------------------------------- Shifting a token--happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =- let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in--- trace "shifting the error token" $- happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)--happyShift new_state i tk st sts stk =- happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)---- happyReduce is specialised for the common cases.--happySpecReduce_0 i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happySpecReduce_0 nt fn j tk st@((action)) sts stk- = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)--happySpecReduce_1 i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')- = let r = fn v1 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_2 i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')- = let r = fn v1 v2 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_3 i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')- = let r = fn v1 v2 v3 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happyReduce k i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happyReduce k nt fn j tk st sts stk- = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of- sts1@((HappyCons (st1@(action)) (_))) ->- let r = fn stk in -- it doesn't hurt to always seq here...- happyDoSeq r (happyGoto nt j tk st1 sts1 r)--happyMonadReduce k nt fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happyMonadReduce k nt fn j tk st sts stk =- case happyDrop k (HappyCons (st) (sts)) of- sts1@((HappyCons (st1@(action)) (_))) ->- let drop_stk = happyDropStk k stk in- happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))--happyMonad2Reduce k nt fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happyMonad2Reduce k nt fn j tk st sts stk =- case happyDrop k (HappyCons (st) (sts)) of- sts1@((HappyCons (st1@(action)) (_))) ->- let drop_stk = happyDropStk k stk-- off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)- off_i = (off Happy_GHC_Exts.+# nt)- new_state = indexShortOffAddr happyTable off_i----- in- happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))--happyDrop 0# l = l-happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t--happyDropStk 0# l = l-happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs---------------------------------------------------------------------------------- Moving to a new state after a reduction---happyGoto nt j tk st = - {- nothing -}- happyDoAction j tk new_state- where off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)- off_i = (off Happy_GHC_Exts.+# nt)- new_state = indexShortOffAddr happyTable off_i------------------------------------------------------------------------------------- Error recovery (ERROR_TOK is the error token)---- parse error if we are in recovery and we fail again-happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =- let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in--- trace "failing" $ - happyError_ explist i tk--{- We don't need state discarding for our restricted implementation of- "error". In fact, it can cause some bogus parses, so I've disabled it- for now --SDM---- discard a state-happyFail ERROR_TOK tk old_st CONS(HAPPYSTATE(action),sts) - (saved_tok `HappyStk` _ `HappyStk` stk) =--- trace ("discarding state, depth " ++ show (length stk)) $- DO_ACTION(action,ERROR_TOK,tk,sts,(saved_tok`HappyStk`stk))--}---- Enter error recovery: generate an error token,--- save the old token and carry on.-happyFail explist i tk (action) sts stk =--- trace "entering error recovery" $- happyDoAction 0# tk action sts ((Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)---- Internal happy errors:--notHappyAtAll :: a-notHappyAtAll = Prelude.error "Internal Happy error\n"---------------------------------------------------------------------------------- Hack to get the typechecker to accept our action functions---happyTcHack :: Happy_GHC_Exts.Int# -> a -> a-happyTcHack x y = y-{-# INLINE happyTcHack #-}----------------------------------------------------------------------------------- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq--- otherwise it emits--- happySeq = happyDontSeq--happyDoSeq, happyDontSeq :: a -> b -> b-happyDoSeq a b = a `Prelude.seq` b-happyDontSeq a b = b---------------------------------------------------------------------------------- Don't inline any functions from the template. GHC has a nasty habit--- of deciding to inline happyGoto everywhere, which increases the size of--- the generated parser quite a bit.-+{-# LANGUAGE CPP #-}+{-# LANGUAGE MagicHash #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE TypeSynonymInstances #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE PatternGuards #-}+{-# LANGUAGE NoStrictData #-}+{-# LANGUAGE UnboxedTuples #-}+{-# LANGUAGE PartialTypeSignatures #-}+{-# OPTIONS_GHC -Wno-incomplete-patterns -Wno-overlapping-patterns #-}+{-# LANGUAGE PatternSynonyms #-}++module Language.Rzk.Syntax.Par+ ( happyError+ , myLexer+ , pModule+ , pHoleIdent+ , pVarIdent+ , pListVarIdent+ , pLanguageDecl+ , pLanguage+ , pCommand+ , pListCommand+ , pDeclUsedVars+ , pSectionName+ , pPattern+ , pListPattern+ , pPattern1+ , pListPattern1+ , pParam+ , pListParam+ , pBind+ , pParamDecl+ , pSigmaParam+ , pListSigmaParam+ , pRestriction+ , pListRestriction+ , pModality+ , pModComp+ , pTerm7+ , pTerm5+ , pTerm4+ , pTerm3+ , pTerm2+ , pTerm6+ , pTerm1+ , pTerm+ , pListTerm+ ) where++import Prelude++import qualified Language.Rzk.Syntax.Abs+import Language.Rzk.Syntax.Lex+import qualified Data.Text+import qualified Control.Monad as Happy_Prelude+import qualified Data.Bool as Happy_Prelude+import qualified Data.Function as Happy_Prelude+import qualified Data.Int as Happy_Prelude+import qualified Data.List as Happy_Prelude+import qualified Data.Maybe as Happy_Prelude+import qualified Data.String as Happy_Prelude+import qualified Data.Tuple as Happy_Prelude+import qualified GHC.Err as Happy_Prelude+import qualified GHC.Num as Happy_Prelude+import qualified Text.Show as Happy_Prelude+import qualified Data.Array as Happy_Data_Array+import qualified Data.Bits as Bits+import qualified GHC.Exts as Happy_GHC_Exts+import Control.Applicative(Applicative(..))+import Control.Monad (ap)++-- parser produced by Happy Version 2.1.7++newtype HappyAbsSyn = HappyAbsSyn HappyAny+#if __GLASGOW_HASKELL__ >= 607+type HappyAny = Happy_GHC_Exts.Any+#else+type HappyAny = forall a . a+#endif+newtype HappyWrap37 = HappyWrap37 ((Language.Rzk.Syntax.Abs.BNFC'Position, String))+happyIn37 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, String)) -> (HappyAbsSyn )+happyIn37 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap37 x)+{-# INLINE happyIn37 #-}+happyOut37 :: (HappyAbsSyn ) -> HappyWrap37+happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut37 #-}+newtype HappyWrap38 = HappyWrap38 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken))+happyIn38 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken)) -> (HappyAbsSyn )+happyIn38 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap38 x)+{-# INLINE happyIn38 #-}+happyOut38 :: (HappyAbsSyn ) -> HappyWrap38+happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut38 #-}+newtype HappyWrap39 = HappyWrap39 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken))+happyIn39 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken)) -> (HappyAbsSyn )+happyIn39 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap39 x)+{-# INLINE happyIn39 #-}+happyOut39 :: (HappyAbsSyn ) -> HappyWrap39+happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut39 #-}+newtype HappyWrap40 = HappyWrap40 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module))+happyIn40 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module)) -> (HappyAbsSyn )+happyIn40 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap40 x)+{-# INLINE happyIn40 #-}+happyOut40 :: (HappyAbsSyn ) -> HappyWrap40+happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut40 #-}+newtype HappyWrap41 = HappyWrap41 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent))+happyIn41 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent)) -> (HappyAbsSyn )+happyIn41 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap41 x)+{-# INLINE happyIn41 #-}+happyOut41 :: (HappyAbsSyn ) -> HappyWrap41+happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut41 #-}+newtype HappyWrap42 = HappyWrap42 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent))+happyIn42 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent)) -> (HappyAbsSyn )+happyIn42 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap42 x)+{-# INLINE happyIn42 #-}+happyOut42 :: (HappyAbsSyn ) -> HappyWrap42+happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut42 #-}+newtype HappyWrap43 = HappyWrap43 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]))+happyIn43 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent])) -> (HappyAbsSyn )+happyIn43 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap43 x)+{-# INLINE happyIn43 #-}+happyOut43 :: (HappyAbsSyn ) -> HappyWrap43+happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut43 #-}+newtype HappyWrap44 = HappyWrap44 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl))+happyIn44 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl)) -> (HappyAbsSyn )+happyIn44 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap44 x)+{-# INLINE happyIn44 #-}+happyOut44 :: (HappyAbsSyn ) -> HappyWrap44+happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut44 #-}+newtype HappyWrap45 = HappyWrap45 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language))+happyIn45 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language)) -> (HappyAbsSyn )+happyIn45 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap45 x)+{-# INLINE happyIn45 #-}+happyOut45 :: (HappyAbsSyn ) -> HappyWrap45+happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut45 #-}+newtype HappyWrap46 = HappyWrap46 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command))+happyIn46 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command)) -> (HappyAbsSyn )+happyIn46 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap46 x)+{-# INLINE happyIn46 #-}+happyOut46 :: (HappyAbsSyn ) -> HappyWrap46+happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut46 #-}+newtype HappyWrap47 = HappyWrap47 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]))+happyIn47 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command])) -> (HappyAbsSyn )+happyIn47 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap47 x)+{-# INLINE happyIn47 #-}+happyOut47 :: (HappyAbsSyn ) -> HappyWrap47+happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut47 #-}+newtype HappyWrap48 = HappyWrap48 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars))+happyIn48 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars)) -> (HappyAbsSyn )+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)+{-# INLINE happyIn48 #-}+happyOut48 :: (HappyAbsSyn ) -> HappyWrap48+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut48 #-}+newtype HappyWrap49 = HappyWrap49 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName))+happyIn49 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName)) -> (HappyAbsSyn )+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)+{-# INLINE happyIn49 #-}+happyOut49 :: (HappyAbsSyn ) -> HappyWrap49+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut49 #-}+newtype HappyWrap50 = HappyWrap50 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))+happyIn50 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)+{-# INLINE happyIn50 #-}+happyOut50 :: (HappyAbsSyn ) -> HappyWrap50+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut50 #-}+newtype HappyWrap51 = HappyWrap51 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))+happyIn51 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)+{-# INLINE happyIn51 #-}+happyOut51 :: (HappyAbsSyn ) -> HappyWrap51+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut51 #-}+newtype HappyWrap52 = HappyWrap52 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))+happyIn52 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)+{-# INLINE happyIn52 #-}+happyOut52 :: (HappyAbsSyn ) -> HappyWrap52+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut52 #-}+newtype HappyWrap53 = HappyWrap53 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))+happyIn53 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)+{-# INLINE happyIn53 #-}+happyOut53 :: (HappyAbsSyn ) -> HappyWrap53+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut53 #-}+newtype HappyWrap54 = HappyWrap54 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param))+happyIn54 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param)) -> (HappyAbsSyn )+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)+{-# INLINE happyIn54 #-}+happyOut54 :: (HappyAbsSyn ) -> HappyWrap54+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut54 #-}+newtype HappyWrap55 = HappyWrap55 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]))+happyIn55 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param])) -> (HappyAbsSyn )+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)+{-# INLINE happyIn55 #-}+happyOut55 :: (HappyAbsSyn ) -> HappyWrap55+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut55 #-}+newtype HappyWrap56 = HappyWrap56 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind))+happyIn56 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind)) -> (HappyAbsSyn )+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)+{-# INLINE happyIn56 #-}+happyOut56 :: (HappyAbsSyn ) -> HappyWrap56+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut56 #-}+newtype HappyWrap57 = HappyWrap57 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl))+happyIn57 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl)) -> (HappyAbsSyn )+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)+{-# INLINE happyIn57 #-}+happyOut57 :: (HappyAbsSyn ) -> HappyWrap57+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut57 #-}+newtype HappyWrap58 = HappyWrap58 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam))+happyIn58 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam)) -> (HappyAbsSyn )+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap58 x)+{-# INLINE happyIn58 #-}+happyOut58 :: (HappyAbsSyn ) -> HappyWrap58+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut58 #-}+newtype HappyWrap59 = HappyWrap59 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]))+happyIn59 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam])) -> (HappyAbsSyn )+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap59 x)+{-# INLINE happyIn59 #-}+happyOut59 :: (HappyAbsSyn ) -> HappyWrap59+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut59 #-}+newtype HappyWrap60 = HappyWrap60 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction))+happyIn60 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction)) -> (HappyAbsSyn )+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap60 x)+{-# INLINE happyIn60 #-}+happyOut60 :: (HappyAbsSyn ) -> HappyWrap60+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut60 #-}+newtype HappyWrap61 = HappyWrap61 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]))+happyIn61 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction])) -> (HappyAbsSyn )+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap61 x)+{-# INLINE happyIn61 #-}+happyOut61 :: (HappyAbsSyn ) -> HappyWrap61+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut61 #-}+newtype HappyWrap62 = HappyWrap62 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality))+happyIn62 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality)) -> (HappyAbsSyn )+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap62 x)+{-# INLINE happyIn62 #-}+happyOut62 :: (HappyAbsSyn ) -> HappyWrap62+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut62 #-}+newtype HappyWrap63 = HappyWrap63 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp))+happyIn63 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp)) -> (HappyAbsSyn )+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap63 x)+{-# INLINE happyIn63 #-}+happyOut63 :: (HappyAbsSyn ) -> HappyWrap63+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut63 #-}+newtype HappyWrap64 = HappyWrap64 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn64 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap64 x)+{-# INLINE happyIn64 #-}+happyOut64 :: (HappyAbsSyn ) -> HappyWrap64+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut64 #-}+newtype HappyWrap65 = HappyWrap65 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn65 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap65 x)+{-# INLINE happyIn65 #-}+happyOut65 :: (HappyAbsSyn ) -> HappyWrap65+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut65 #-}+newtype HappyWrap66 = HappyWrap66 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn66 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap66 x)+{-# INLINE happyIn66 #-}+happyOut66 :: (HappyAbsSyn ) -> HappyWrap66+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut66 #-}+newtype HappyWrap67 = HappyWrap67 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn67 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap67 x)+{-# INLINE happyIn67 #-}+happyOut67 :: (HappyAbsSyn ) -> HappyWrap67+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut67 #-}+newtype HappyWrap68 = HappyWrap68 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn68 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap68 x)+{-# INLINE happyIn68 #-}+happyOut68 :: (HappyAbsSyn ) -> HappyWrap68+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut68 #-}+newtype HappyWrap69 = HappyWrap69 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn69 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap69 x)+{-# INLINE happyIn69 #-}+happyOut69 :: (HappyAbsSyn ) -> HappyWrap69+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut69 #-}+newtype HappyWrap70 = HappyWrap70 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn70 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap70 x)+{-# INLINE happyIn70 #-}+happyOut70 :: (HappyAbsSyn ) -> HappyWrap70+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut70 #-}+newtype HappyWrap71 = HappyWrap71 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn71 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap71 x)+{-# INLINE happyIn71 #-}+happyOut71 :: (HappyAbsSyn ) -> HappyWrap71+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut71 #-}+newtype HappyWrap72 = HappyWrap72 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]))+happyIn72 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term])) -> (HappyAbsSyn )+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap72 x)+{-# INLINE happyIn72 #-}+happyOut72 :: (HappyAbsSyn ) -> HappyWrap72+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut72 #-}+happyInTok :: (Token) -> (HappyAbsSyn )+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyInTok #-}+happyOutTok :: (HappyAbsSyn ) -> (Token)+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOutTok #-}+++{-# NOINLINE happyTokenStrings #-}+happyTokenStrings = ["'#assume'","'#check'","'#compute'","'#compute-nf'","'#compute-whnf'","'#def'","'#define'","'#end'","'#lang'","'#postulate'","'#section'","'#set-option'","'#unset-option'","'#variable'","'#variables'","'$extract$'","'('","')'","'*'","'*_1'","'*\8321'","','","'->'","'/'","'/\\\\'","'0_2'","'0\8322'","'1'","'1_2'","'1\8322'","'2'","':'","':='","';'","'<'","'<='","'<|'","'='","'==='","'=_{'","'>'","'BOT'","'CUBE'","'Sigma'","'TOP'","'TOPE'","'U'","'Unit'","'['","'\\\\'","'\\\\/'","']'","'_#'","'_b'","'_id'","'_op'","'as'","'first'","'flip_op'","'flip\7506\7510'","'idJ'","'in'","'inv_op'","'inv\7506\7510'","'let'","'mod'","'recBOT'","'recOR'","'refl'","'refl_{'","'rzk-1'","'second'","'unflip_op'","'unflip\7506\7510'","'uninv_op'","'uninv\7506\7510'","'unit'","'uses'","'{'","'|'","'|->'","'|>'","'}'","'\215'","'\931'","'\960\8321'","'\960\8322'","'\7506\7510'","'\8594'","'\8614'","'\8721'","'\8743'","'\8744'","'\8801'","'\8804'","'\8868'","'\8869'","'\9837'","'\9839'","L_quoted","L_VarIdentToken","L_HoleIdentToken","%eof"]++happyActOffsets :: HappyAddr+happyActOffsets = HappyA# "\xf9\xff\xff\xff\xac\xff\xff\xff\xb2\xff\xff\xff\xb2\xff\xff\xff\x2e\x00\x00\x00\x34\x00\x00\x00\x65\x09\x00\x00\x65\x09\x00\x00\x37\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x30\x00\x00\x00\x30\x00\x00\x00\x30\x00\x00\x00\xf5\xff\xff\xff\xf5\xff\xff\xff\x30\x00\x00\x00\x95\x00\x00\x00\x30\x00\x00\x00\x30\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\xb2\x00\x00\x00\xb2\x00\x00\x00\xee\x01\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\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\x17\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x00\x00\xf8\xff\xff\xff\xe3\xff\xff\xff\x45\x00\x00\x00\x61\x01\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x3c\x00\x00\x00\xb2\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\x95\x00\x00\x00\xb2\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\xf5\xff\xff\xff\xee\x01\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xad\x00\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\x57\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\x69\x00\x00\x00\xde\x00\x00\x00\xee\x01\x00\x00\xee\x01\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x41\x00\x00\x00\x5f\x00\x00\x00\x22\x01\x00\x00\x47\x00\x00\x00\x5f\x00\x00\x00\xaf\x01\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\xf6\xff\xff\xff\x5f\x00\x00\x00\xe4\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\x92\x00\x00\x00\xf9\x00\x00\x00\xb0\x00\x00\x00\x46\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x03\x01\x00\x00\xd1\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\xd1\x00\x00\x00\xaf\x01\x00\x00\x1b\x01\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\xee\x00\x00\x00\xb7\x00\x00\x00\xb7\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x34\x01\x00\x00\xf1\x00\x00\x00\xf1\x00\x00\x00\xb7\x00\x00\x00\xf1\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\xf1\x00\x00\x00\x50\x01\x00\x00\x55\x01\x00\x00\x23\x01\x00\x00\x2f\x01\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x2f\x01\x00\x00\x2f\x01\x00\x00\x2f\x01\x00\x00\x2f\x01\x00\x00\x2f\x01\x00\x00\x36\x01\x00\x00\x36\x01\x00\x00\x38\x01\x00\x00\x38\x01\x00\x00\x43\x01\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\x43\x01\x00\x00\x58\x01\x00\x00\x53\x01\x00\x00\x86\x01\x00\x00\x86\x01\x00\x00\x86\x01\x00\x00\x86\x01\x00\x00\x65\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\xb8\x01\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\xd8\x01\x00\x00\x65\x09\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\xe4\x01\x00\x00\x13\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xfc\x01\x00\x00\xb7\x00\x00\x00\xf0\xff\xff\xff\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\xb2\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xf1\xff\xff\xff\xe3\x00\x00\x00\x47\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\xf7\x01\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\x29\x00\x00\x00\x47\x00\x00\x00\xee\x01\x00\x00\xfe\x01\x00\x00\xb2\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\x27\x00\x00\x00\xb7\x00\x00\x00\xd7\x01\x00\x00\x42\x00\x00\x00\x04\x01\x00\x00\xee\x01\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4b\x00\x00\x00\x4b\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\x47\x00\x00\x00\xf0\xff\xff\xff\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x08\x02\x00\x00\x14\x02\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x34\x02\x00\x00\xb7\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x26\x02\x00\x00\xf2\xff\xff\xff\x47\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x47\x00\x00\x00\x2d\x02\x00\x00\x46\x02\x00\x00\x3b\x02\x00\x00\x48\x02\x00\x00\x0a\x02\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\xaf\x01\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\xb7\x00\x00\x00\x37\x02\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x47\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x6e\x00\x00\x00\xb6\x00\x00\x00\xbc\x00\x00\x00\x04\x02\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x47\x00\x00\x00\x67\x02\x00\x00\x47\x00\x00\x00\x70\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x02\x00\x00\x47\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\xb7\x00\x00\x00\xf0\xff\xff\xff\xb7\x00\x00\x00\xf0\xff\xff\xff\x5b\x00\x00\x00\x47\x00\x00\x00\x4e\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x64\x02\x00\x00\x91\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\xf0\xff\xff\xff\x61\x02\x00\x00\x99\x02\x00\x00\x9b\x02\x00\x00\x47\x00\x00\x00\x0f\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xc0\x02\x00\x00\xc1\x02\x00\x00\xbf\x02\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\xce\x02\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xd4\x02\x00\x00\xe2\x02\x00\x00\xe3\x02\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\xf3\x02\x00\x00\x47\x00\x00\x00\xe7\x02\x00\x00\x47\x00\x00\x00\xf5\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x47\x00\x00\x00\xf8\x02\x00\x00\x47\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x16\x03\x00\x00\x14\x03\x00\x00\x23\x03\x00\x00\x24\x03\x00\x00\x25\x03\x00\x00\x26\x03\x00\x00\xf7\x02\x00\x00\xf9\x02\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x0d\x03\x00\x00\x47\x00\x00\x00\x36\x03\x00\x00\x45\x03\x00\x00\x48\x03\x00\x00\x00\x00\x00\x00\x4a\x03\x00\x00\x4b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x03\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x57\x03\x00\x00\x47\x00\x00\x00\x58\x03\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\x00\x00\x00\x47\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\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\x47\x00\x00\x00\x18\x03\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x68\x03\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x69\x03\x00\x00\x47\x00\x00\x00\x7b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyGotoOffsets :: HappyAddr+happyGotoOffsets = HappyA# "\xa7\x01\x00\x00\x4c\x00\x00\x00\x29\x02\x00\x00\x69\x01\x00\x00\x89\x03\x00\x00\x87\x03\x00\x00\x96\x03\x00\x00\x66\x00\x00\x00\x86\x03\x00\x00\x97\x01\x00\x00\x42\x01\x00\x00\x75\x09\x00\x00\x7a\x02\x00\x00\x20\x02\x00\x00\x4c\x09\x00\x00\x1d\x09\x00\x00\x5e\x01\x00\x00\xe6\x01\x00\x00\x57\x01\x00\x00\xb5\x00\x00\x00\xab\x02\x00\x00\x56\x02\x00\x00\x97\x03\x00\x00\xb3\x00\x00\x00\x31\x01\x00\x00\x59\x08\x00\x00\x36\x02\x00\x00\x29\x08\x00\x00\xd9\x07\x00\x00\xed\x00\x00\x00\xeb\x06\x00\x00\x22\x03\x00\x00\x95\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\x59\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x33\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x08\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x09\x00\x00\xbb\x01\x00\x00\xe1\x01\x00\x00\xaf\x08\x00\x00\x00\x00\x00\x00\xb7\x08\x00\x00\xca\x08\x00\x00\x81\x01\x00\x00\x9a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x03\x00\x00\xcf\x08\x00\x00\xd4\x08\x00\x00\xd9\x08\x00\x00\xde\x08\x00\x00\xe7\x08\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\xec\x08\x00\x00\xf1\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x55\x03\x00\x00\x00\x00\x00\x00\xf6\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x09\x00\x00\x00\x00\x00\x00\x77\x09\x00\x00\x57\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x00\x00\x66\x03\x00\x00\x77\x03\x00\x00\x88\x03\x00\x00\x99\x03\x00\x00\xeb\x07\x00\x00\xee\x07\x00\x00\x16\x02\x00\x00\xfb\x07\x00\x00\x8b\x08\x00\x00\xa0\x03\x00\x00\xa1\x03\x00\x00\xfe\x07\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x03\x00\x00\x7d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\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\xa7\x03\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\xb8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00\x51\x09\x00\x00\x00\x00\x00\x00\x7a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00\x78\x02\x00\x00\x00\x00\x00\x00\x3b\x08\x00\x00\xbc\x02\x00\x00\xbb\x03\x00\x00\xcc\x03\x00\x00\x89\x02\x00\x00\xab\x03\x00\x00\xa3\x08\x00\x00\xa9\x08\x00\x00\x00\x00\x00\x00\xe9\x07\x00\x00\xdd\x03\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\x7c\x09\x00\x00\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\x02\x00\x00\xfb\x08\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x09\x00\x00\x22\x02\x00\x00\xfc\x06\x00\x00\xf9\x07\x00\x00\x09\x08\x00\x00\x39\x08\x00\x00\x49\x08\x00\x00\x76\x08\x00\x00\x7d\x08\x00\x00\x86\x08\x00\x00\x9a\x08\x00\x00\x0d\x07\x00\x00\x1e\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\xff\x03\x00\x00\xcd\x02\x00\x00\x10\x04\x00\x00\x21\x04\x00\x00\x32\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x07\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\xeb\x01\x00\x00\x43\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x09\x00\x00\x09\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x87\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\xa9\x04\x00\x00\x38\x09\x00\x00\x3a\x09\x00\x00\x43\x09\x00\x00\xa2\x03\x00\x00\xba\x04\x00\x00\xcb\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x08\x00\x00\x5b\x08\x00\x00\xef\x02\x00\x00\x13\x09\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x20\x05\x00\x00\x00\x00\x00\x00\x31\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x09\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x64\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x05\x00\x00\x97\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x05\x00\x00\x00\x00\x00\x00\xb9\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\x56\x09\x00\x00\x00\x00\x00\x00\xca\x05\x00\x00\x00\x00\x00\x00\xdb\x05\x00\x00\x00\x00\x00\x00\xec\x05\x00\x00\x00\x00\x00\x00\xfd\x05\x00\x00\x00\x00\x00\x00\x0e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x06\x00\x00\x00\x00\x00\x00\x30\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\x41\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\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\x51\x07\x00\x00\x62\x07\x00\x00\x00\x00\x00\x00\x63\x06\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x07\x00\x00\x84\x07\x00\x00\x95\x07\x00\x00\xa6\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x06\x00\x00\x00\x00\x00\x00\x96\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\xb7\x07\x00\x00\x00\x00\x00\x00\xa7\x06\x00\x00\x00\x00\x00\x00\xb8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\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\xc9\x06\x00\x00\x00\x00\x00\x00\xda\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyDefActions :: HappyAddr+happyDefActions = HappyA# "\x00\x00\x00\x00\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\xff\xff\xff\xc0\xff\xff\xff\xbf\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xd9\xff\xff\xff\xda\xff\xff\xff\x7b\xff\xff\xff\x7a\xff\xff\xff\x00\x00\x00\x00\x57\xff\xff\xff\x6d\xff\xff\xff\x69\xff\xff\xff\x66\xff\xff\xff\x4b\xff\xff\xff\x71\xff\xff\xff\x42\xff\xff\xff\x41\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xff\xff\xff\x8f\xff\xff\xff\x77\xff\xff\xff\x8d\xff\xff\xff\x90\xff\xff\xff\x76\xff\xff\xff\x8c\xff\xff\xff\x8e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x74\xff\xff\xff\x92\xff\xff\xff\x00\x00\x00\x00\x75\xff\xff\xff\x91\xff\xff\xff\x93\xff\xff\xff\x86\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\x00\x00\x00\x00\x7f\xff\xff\xff\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\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\xff\xff\x8a\xff\xff\xff\xdd\xff\xff\xff\xdc\xff\xff\xff\x00\x00\x00\x00\x4b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\xff\xff\x00\x00\x00\x00\x99\xff\xff\xff\x9b\xff\xff\xff\x96\xff\xff\xff\x97\xff\xff\xff\x98\xff\xff\xff\x9c\xff\xff\xff\x9a\xff\xff\xff\x00\x00\x00\x00\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xff\xff\xff\x00\x00\x00\x00\xa2\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xab\xff\xff\xff\xad\xff\xff\xff\x00\x00\x00\x00\xb4\xff\xff\xff\xaf\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\xff\xff\xb6\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\x00\x00\x00\x00\xbf\xff\xff\xff\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\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\xff\xff\xdb\xff\xff\xff\xd7\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\xff\xff\x00\x00\x00\x00\xc9\xff\xff\xff\xc0\xff\xff\xff\xc8\xff\xff\xff\xc0\xff\xff\xff\xc0\xff\xff\xff\xd0\xff\xff\xff\xcf\xff\xff\xff\xd1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\xff\xff\x00\x00\x00\x00\xb8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xff\xff\x00\x00\x00\x00\xae\xff\xff\xff\x00\x00\x00\x00\x5b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\x59\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xff\xff\xff\x61\xff\xff\xff\x5e\xff\xff\xff\x5d\xff\xff\xff\x55\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xff\xff\xff\x63\xff\xff\xff\x00\x00\x00\x00\x60\xff\xff\xff\x5f\xff\xff\xff\x56\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\x4a\xff\xff\xff\x6e\xff\xff\xff\x6f\xff\xff\xff\x6c\xff\xff\xff\x6b\xff\xff\xff\x6a\xff\xff\xff\x68\xff\xff\xff\x67\xff\xff\xff\x65\xff\xff\xff\x43\xff\xff\xff\x40\xff\xff\xff\x5a\xff\xff\xff\x79\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\xff\xff\xff\x00\x00\x00\x00\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\xff\xff\xff\x72\xff\xff\xff\x70\xff\xff\xff\x94\xff\xff\xff\x9d\xff\xff\xff\xa0\xff\xff\xff\x9f\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\xa1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xac\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xff\xff\xff\x00\x00\x00\x00\xc2\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xca\xff\xff\xff\xcb\xff\xff\xff\xd4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\xff\xff\xff\xcc\xff\xff\xff\xc1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xff\xff\xff\x00\x00\x00\x00\xa3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xff\xff\xff\x46\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\x00\x00\x00\x00\xaa\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x73\xff\xff\xff\x85\xff\xff\xff\x81\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\x50\xff\xff\xff\xbb\xff\xff\xff\x00\x00\x00\x00\xb3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff\xff\xff\x00\x00\x00\x00\xce\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\xff\xff\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\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xff\xff\xff\xa5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x83\xff\xff\xff\xa9\xff\xff\xff\x00\x00\x00\x00\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\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\xff\xff\xff\xb2\xff\xff\xff\xb1\xff\xff\xff\xc4\xff\xff\xff\x00\x00\x00\x00\xc6\xff\xff\xff\x00\x00\x00\x00\xc7\xff\xff\xff\xc5\xff\xff\xff\x44\xff\xff\xff\x45\xff\xff\xff\x51\xff\xff\xff\x53\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xff\xff\xff\x00\x00\x00\x00\x47\xff\xff\xff\x49\xff\xff\xff\x00\x00\x00\x00\x48\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xff\xff\xff\x52\xff\xff\xff\x87\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\xff\xff\xff"#++happyCheck :: HappyAddr+happyCheck = HappyA# "\xff\xff\xff\xff\x11\x00\x00\x00\x12\x00\x00\x00\x0a\x00\x00\x00\x13\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x12\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x14\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x13\x00\x00\x00\x1a\x00\x00\x00\x67\x00\x00\x00\x24\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x34\x00\x00\x00\x66\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x13\x00\x00\x00\x33\x00\x00\x00\x21\x00\x00\x00\x12\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x17\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x18\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x0a\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x18\x00\x00\x00\x50\x00\x00\x00\x5e\x00\x00\x00\x12\x00\x00\x00\x4e\x00\x00\x00\x52\x00\x00\x00\x50\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x21\x00\x00\x00\x55\x00\x00\x00\x5c\x00\x00\x00\x5b\x00\x00\x00\x02\x00\x00\x00\x51\x00\x00\x00\x04\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x5d\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x18\x00\x00\x00\x66\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x68\x00\x00\x00\x14\x00\x00\x00\x51\x00\x00\x00\x4e\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x27\x00\x00\x00\x12\x00\x00\x00\x29\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x26\x00\x00\x00\x29\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x5a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x66\x00\x00\x00\x33\x00\x00\x00\x12\x00\x00\x00\x48\x00\x00\x00\x54\x00\x00\x00\x4e\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x5a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x4f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x21\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x66\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x66\x00\x00\x00\x43\x00\x00\x00\x65\x00\x00\x00\x5a\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x55\x00\x00\x00\x5b\x00\x00\x00\x17\x00\x00\x00\x5c\x00\x00\x00\x68\x00\x00\x00\x4e\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x51\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x54\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x4e\x00\x00\x00\x12\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x4e\x00\x00\x00\x66\x00\x00\x00\x50\x00\x00\x00\x12\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x68\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x12\x00\x00\x00\x66\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x66\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x21\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x21\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x12\x00\x00\x00\x50\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x12\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x68\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x4e\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x24\x00\x00\x00\x1b\x00\x00\x00\x26\x00\x00\x00\x4e\x00\x00\x00\x59\x00\x00\x00\x50\x00\x00\x00\x20\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x17\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x13\x00\x00\x00\x68\x00\x00\x00\x12\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x66\x00\x00\x00\x66\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x66\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x21\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x21\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x12\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x68\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x21\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x4e\x00\x00\x00\x68\x00\x00\x00\x50\x00\x00\x00\x01\x00\x00\x00\x68\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x3e\x00\x00\x00\x14\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x15\x00\x00\x00\x66\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x4e\x00\x00\x00\x13\x00\x00\x00\x25\x00\x00\x00\x12\x00\x00\x00\x1b\x00\x00\x00\x28\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x23\x00\x00\x00\x18\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x68\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x13\x00\x00\x00\x66\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x65\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x66\x00\x00\x00\x3e\x00\x00\x00\x48\x00\x00\x00\x17\x00\x00\x00\x55\x00\x00\x00\x0c\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x68\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x07\x00\x00\x00\x4e\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x66\x00\x00\x00\x01\x00\x00\x00\x5a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x0d\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x23\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x24\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x1b\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x21\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x15\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x3e\x00\x00\x00\x68\x00\x00\x00\x21\x00\x00\x00\x05\x00\x00\x00\x4f\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x21\x00\x00\x00\x0d\x00\x00\x00\x21\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x4e\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x1b\x00\x00\x00\x66\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x21\x00\x00\x00\x20\x00\x00\x00\x0d\x00\x00\x00\x21\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x15\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x24\x00\x00\x00\x17\x00\x00\x00\x26\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x05\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x51\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x3e\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x13\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x4e\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x21\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x21\x00\x00\x00\x17\x00\x00\x00\x54\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x65\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x21\x00\x00\x00\x0d\x00\x00\x00\x21\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x21\x00\x00\x00\x51\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x54\x00\x00\x00\x3f\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x53\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x17\x00\x00\x00\x2a\x00\x00\x00\x13\x00\x00\x00\x2a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x19\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x54\x00\x00\x00\x19\x00\x00\x00\x22\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x22\x00\x00\x00\x19\x00\x00\x00\x22\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x51\x00\x00\x00\x54\x00\x00\x00\x3f\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x54\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x17\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x08\x00\x00\x00\x07\x00\x00\x00\x0b\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x19\x00\x00\x00\x19\x00\x00\x00\x0b\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x08\x00\x00\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x19\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x0d\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x15\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\xff\xff\xff\xff\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x0d\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x15\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x00\x00\x0c\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x20\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x1b\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x0d\x00\x00\x00\x1b\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\x00\x00\x16\x00\x00\x00\x0d\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x15\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x11\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x11\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x0f\x00\x00\x00\x10\x00\x00\x00\xff\xff\xff\xff\x0d\x00\x00\x00\x0d\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\xff\xff\xff\xff\x0b\x00\x00\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\xaa\x00\x00\x00\x0e\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x88\x00\x00\x00\x0f\x01\x00\x00\x5c\x01\x00\x00\xd4\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x86\x01\x00\x00\xf9\x00\x00\x00\x60\x00\x00\x00\x3c\x00\x00\x00\x84\x01\x00\x00\x3d\x00\x00\x00\xf7\x00\x00\x00\x5f\x00\x00\x00\x85\x01\x00\x00\x31\x01\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x6d\x01\x00\x00\x45\x00\x00\x00\x5a\x01\x00\x00\x7e\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x31\x01\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\xff\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\xaa\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x16\x01\x00\x00\x58\x00\x00\x00\xf8\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\xd0\x00\x00\x00\x89\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x72\x00\x00\x00\x1e\x01\x00\x00\xd5\x00\x00\x00\x5c\x00\x00\x00\xd1\x00\x00\x00\x24\x00\x00\x00\x87\x01\x00\x00\xad\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\xfa\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x11\x01\x00\x00\x5f\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xff\xff\xff\xff\xd4\x00\x00\x00\x6e\x01\x00\x00\x7f\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xd7\x00\x00\x00\x7e\x00\x00\x00\xd8\x00\x00\x00\x3c\x00\x00\x00\xd7\x00\x00\x00\x3d\x00\x00\x00\xd8\x00\x00\x00\x95\x00\x00\x00\x96\x00\x00\x00\x00\x01\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x5f\x00\x00\x00\x45\x00\x00\x00\xde\x00\x00\x00\xa8\x00\x00\x00\x1f\x01\x00\x00\x7f\x00\x00\x00\xf6\x00\x00\x00\x88\x00\x00\x00\x17\x01\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x95\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x4a\x01\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x5f\x00\x00\x00\x58\x00\x00\x00\xd0\x00\x00\x00\x5f\x00\x00\x00\xe8\x00\x00\x00\x23\x00\x00\x00\x12\x01\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\xd5\x00\x00\x00\xd1\x00\x00\x00\xf5\x00\x00\x00\x5c\x00\x00\x00\xff\xff\xff\xff\x7f\x00\x00\x00\x32\x00\x00\x00\x33\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x7c\x01\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x7d\x01\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x23\x00\x00\x00\x7f\x00\x00\x00\xf0\x00\x00\x00\x3c\x00\x00\x00\x79\x00\x00\x00\x3d\x00\x00\x00\x7f\x00\x00\x00\x5f\x00\x00\x00\x89\x00\x00\x00\xeb\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x7a\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\xff\xff\xff\xff\x88\x00\x00\x00\x7e\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x88\x00\x00\x00\x5f\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x5f\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x48\x01\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x46\x01\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\xe5\x00\x00\x00\x58\x00\x00\x00\x6b\x00\x00\x00\xf3\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xdc\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xd9\x00\x00\x00\x32\x00\x00\x00\x65\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xff\xff\xff\xff\x5f\x00\x00\x00\x60\x00\x00\x00\xd3\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x7f\x00\x00\x00\x7f\x00\x00\x00\x89\x00\x00\x00\x3c\x00\x00\x00\x28\x00\x00\x00\x3d\x00\x00\x00\x7f\x00\x00\x00\x72\x00\x00\x00\x89\x00\x00\x00\x63\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\xd2\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x0e\x01\x00\x00\xff\xff\xff\xff\x88\x00\x00\x00\xce\x00\x00\x00\x0f\x01\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x5f\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x10\x01\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\xcf\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x65\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xff\xff\xff\xff\x5a\x00\x00\x00\x5b\x00\x00\x00\xca\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x23\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x3c\x00\x00\x00\x79\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\xc5\x00\x00\x00\x6a\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x90\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\xcc\x00\x00\x00\x7f\x00\x00\x00\xff\xff\xff\xff\x89\x00\x00\x00\x23\x00\x00\x00\xff\xff\xff\xff\x23\x00\x00\x00\x24\x00\x00\x00\x79\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x49\x00\x00\x00\xd4\x00\x00\x00\xc3\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x23\x00\x00\x00\x82\x00\x00\x00\x7f\x00\x00\x00\x5f\x00\x00\x00\xaa\x00\x00\x00\xab\x00\x00\x00\x57\x00\x00\x00\x83\x00\x00\x00\xfb\x00\x00\x00\x65\x00\x00\x00\xca\x00\x00\x00\xfc\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xc2\x00\x00\x00\xab\xff\xff\xff\x95\x00\x00\x00\xb0\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x23\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x3c\x00\x00\x00\x79\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\x00\x00\x3f\x00\x00\x00\x82\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\xcc\x00\x00\x00\xe6\x00\x00\x00\x5f\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x91\x00\x00\x00\x6b\x01\x00\x00\x5f\x00\x00\x00\x49\x00\x00\x00\xa8\x00\x00\x00\x6c\x01\x00\x00\xd5\x00\x00\x00\x92\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x27\x00\x00\x00\xae\x00\x00\x00\xff\xff\xff\xff\xfd\x00\x00\x00\xfe\x00\x00\x00\xaf\x00\x00\x00\x57\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x5f\x00\x00\x00\x23\x00\x00\x00\xab\xff\xff\xff\x23\x00\x00\x00\x24\x00\x00\x00\x79\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x65\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\xdc\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x41\x01\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x23\x00\x00\x00\x95\x00\x00\x00\x37\x01\x00\x00\x3c\x00\x00\x00\x79\x00\x00\x00\x3d\x00\x00\x00\xed\x00\x00\x00\x6b\x00\x00\x00\x18\x01\x00\x00\x40\x01\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x23\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\xcc\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x24\x01\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x3e\x01\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x49\x00\x00\x00\xff\xff\xff\xff\x3f\x01\x00\x00\x79\x00\x00\x00\x95\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x3a\x01\x00\x00\x82\x00\x00\x00\x39\x01\x00\x00\x80\x00\x00\x00\x23\x00\x00\x00\xec\x00\x00\x00\x57\x00\x00\x00\x5e\x01\x00\x00\x79\x00\x00\x00\x65\x00\x00\x00\x28\x00\x00\x00\x5f\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x35\x01\x00\x00\x81\x00\x00\x00\x21\x01\x00\x00\x34\x01\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x22\x01\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x3c\x00\x00\x00\x31\x01\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x23\x00\x00\x00\x21\x01\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x91\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x1a\x01\x00\x00\x23\x00\x00\x00\xb9\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x79\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x13\x01\x00\x00\x64\x01\x00\x00\x23\x00\x00\x00\x63\x01\x00\x00\x49\x00\x00\x00\x8a\x00\x00\x00\xac\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x27\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x5d\x01\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x57\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x0b\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x60\x01\x00\x00\xaa\x00\x00\x00\xc0\x00\x00\x00\x58\x01\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x68\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x56\x01\x00\x00\x57\x01\x00\x00\x54\x01\x00\x00\x55\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xa8\x01\x00\x00\x23\x00\x00\x00\x27\x00\x00\x00\x23\x00\x00\x00\x51\x01\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\xaa\x00\x00\x00\xb3\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x4d\x01\x00\x00\xaa\x00\x00\x00\xb1\x00\x00\x00\xaa\x00\x00\x00\x36\x01\x00\x00\x8f\x01\x00\x00\x8a\x00\x00\x00\x8d\x01\x00\x00\x8d\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x75\x00\x00\x00\x31\x01\x00\x00\x8b\x01\x00\x00\x89\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x75\x00\x00\x00\x2a\x01\x00\x00\x7a\x01\x00\x00\x78\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x75\x00\x00\x00\x1b\x01\x00\x00\x77\x01\x00\x00\x72\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1c\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x78\x00\x00\x00\x71\x01\x00\x00\xa7\x01\x00\x00\x70\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xa5\x01\x00\x00\xa4\x01\x00\x00\x2d\x01\x00\x00\xa3\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2e\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x9f\x01\x00\x00\xa0\x01\x00\x00\x67\x01\x00\x00\x9c\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x68\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x9b\x01\x00\x00\x9a\x01\x00\x00\x4e\x01\x00\x00\x99\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4f\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x96\x01\x00\x00\xbb\x01\x00\x00\x2d\x01\x00\x00\x94\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x80\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x92\x01\x00\x00\xbf\x01\x00\x00\x7d\x01\x00\x00\xbd\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xba\x01\x00\x00\xb9\x01\x00\x00\x72\x01\x00\x00\xb8\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x73\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xb4\x01\x00\x00\xb7\x01\x00\x00\xb6\x01\x00\x00\xb5\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x60\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xb2\x01\x00\x00\xb3\x01\x00\x00\xb0\x01\x00\x00\xae\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xf2\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xac\x01\x00\x00\xad\x01\x00\x00\xab\x01\x00\x00\xaa\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xe3\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xd1\x01\x00\x00\xcd\x01\x00\x00\xca\x01\x00\x00\xc8\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xd5\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xd3\x01\x00\x00\xc6\x01\x00\x00\xd4\x01\x00\x00\xd6\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbf\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xd8\x01\x00\x00\xa6\x00\x00\x00\xa8\x00\x00\x00\x93\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbe\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xa5\x00\x00\x00\xb6\x00\x00\x00\xb5\x00\x00\x00\x43\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbd\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x74\x00\x00\x00\xf0\x00\x00\x00\x3c\x01\x00\x00\xe5\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbc\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xb2\x00\x00\x00\x3b\x01\x00\x00\x3a\x01\x00\x00\x29\x01\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2c\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2b\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x25\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x17\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x69\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x66\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x65\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x64\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x5d\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x5a\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x58\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x52\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4d\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4b\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4a\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x42\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x41\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x8d\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x8b\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x89\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x87\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7a\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x78\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x75\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x6e\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa7\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa5\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa1\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa0\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x9d\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x9c\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x96\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x94\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x92\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x90\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x8f\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbd\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbb\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xb0\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xae\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc8\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc6\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc0\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xbf\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xcf\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xce\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xd4\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xd6\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x61\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\x60\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x61\x00\x00\x00\x2d\x00\x00\x00\xcd\x01\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x26\x01\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x09\x01\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x08\x01\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x82\x01\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x67\x00\x00\x00\x7a\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x2f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x23\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x06\x01\x00\x00\x7a\x00\x00\x00\x66\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x66\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x81\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x28\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\xb7\x00\x00\x00\x28\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x66\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x66\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x28\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x66\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x28\x01\x00\x00\x28\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\xeb\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xcc\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xe9\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xe2\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xe1\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xe0\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xdf\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xda\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\xd9\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x23\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x0c\x01\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\xca\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x7f\x01\x00\x00\x84\x00\x00\x00\x7b\x00\x00\x00\x74\x01\x00\x00\x14\x01\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x84\x00\x00\x00\x79\x00\x00\x00\x84\x00\x00\x00\x79\x00\x00\x00\x85\x00\x00\x00\xee\x00\x00\x00\x85\x00\x00\x00\xc8\x00\x00\x00\x23\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x79\x00\x00\x00\x85\x00\x00\x00\x48\x01\x00\x00\x85\x00\x00\x00\x46\x01\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x44\x01\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x23\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x79\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\xc5\x00\x00\x00\x8b\x00\x00\x00\x97\x01\x00\x00\x98\x00\x00\x00\x99\x00\x00\x00\x9a\x00\x00\x00\x9b\x00\x00\x00\x9c\x00\x00\x00\x9d\x00\x00\x00\x9e\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\xa1\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\xa4\x00\x00\x00\xa5\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x79\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\x23\x00\x00\x00\x8e\x00\x00\x00\xc3\x00\x00\x00\x1f\x01\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\x51\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (33, 191) [+ (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)+ ]++happyRuleArr :: HappyAddr+happyRuleArr = HappyA# "\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x03\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x07\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x0e\x00\x00\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x11\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x07\x00\x00\x00\x11\x00\x00\x00\x07\x00\x00\x00\x11\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x02\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x07\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x09\x00\x00\x00\x14\x00\x00\x00\x07\x00\x00\x00\x14\x00\x00\x00\x06\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x15\x00\x00\x00\x04\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x03\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x17\x00\x00\x00\x03\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x03\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x1b\x00\x00\x00\x0a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x07\x00\x00\x00\x1b\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1b\x00\x00\x00\x0e\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x03\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x09\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x05\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x06\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x09\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x04\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x21\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00"#++happyCatchStates :: [Happy_Prelude.Int]+happyCatchStates = []++happy_n_terms = 105 :: Happy_Prelude.Int+happy_n_nonterms = 36 :: Happy_Prelude.Int++happy_n_starts = 33 :: Happy_Prelude.Int++happyReduce_33 = happySpecReduce_1 0# happyReduction_33+happyReduction_33 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn37+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) happy_var_1)))+ )}++happyReduce_34 = happySpecReduce_1 1# happyReduction_34+happyReduction_34 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn38+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText happy_var_1))+ )}++happyReduce_35 = happySpecReduce_1 2# happyReduction_35+happyReduction_35 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn39+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText happy_var_1))+ )}++happyReduce_36 = happySpecReduce_2 3# happyReduction_36+happyReduction_36 happy_x_2+ happy_x_1+ = case happyOut44 happy_x_1 of { (HappyWrap44 happy_var_1) -> + case happyOut47 happy_x_2 of { (HappyWrap47 happy_var_2) -> + happyIn40+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Module (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_37 = happySpecReduce_1 4# happyReduction_37+happyReduction_37 happy_x_1+ = case happyOut39 happy_x_1 of { (HappyWrap39 happy_var_1) -> + happyIn41+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.HoleIdent (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_38 = happySpecReduce_1 5# happyReduction_38+happyReduction_38 happy_x_1+ = case happyOut38 happy_x_1 of { (HappyWrap38 happy_var_1) -> + happyIn42+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.VarIdent (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_39 = happySpecReduce_1 6# happyReduction_39+happyReduction_39 happy_x_1+ = case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> + happyIn43+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_40 = happySpecReduce_2 6# happyReduction_40+happyReduction_40 happy_x_2+ happy_x_1+ = case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> + case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> + happyIn43+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_41 = happySpecReduce_3 7# happyReduction_41+happyReduction_41 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut45 happy_x_2 of { (HappyWrap45 happy_var_2) -> + happyIn44+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_42 = happySpecReduce_1 8# happyReduction_42+happyReduction_42 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn45+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_43 = happyReduce 4# 9# happyReduction_43+happyReduction_43 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut37 happy_x_2 of { (HappyWrap37 happy_var_2) -> + case happyOut37 happy_x_4 of { (HappyWrap37 happy_var_4) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_44 = happySpecReduce_2 9# happyReduction_44+happyReduction_44 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut37 happy_x_2 of { (HappyWrap37 happy_var_2) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_45 = happyReduce 4# 9# happyReduction_45+happyReduction_45 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_46 = happySpecReduce_2 9# happyReduction_46+happyReduction_46 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_47 = happySpecReduce_2 9# happyReduction_47+happyReduction_47 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_48 = happySpecReduce_2 9# happyReduction_48+happyReduction_48 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_49 = happyReduce 6# 9# happyReduction_49+happyReduction_49 (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 { happy_var_1 -> + case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> + case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> + case happyOut55 happy_x_4 of { (HappyWrap55 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}}++happyReduce_50 = happyReduce 5# 9# happyReduction_50+happyReduction_50 (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 { happy_var_1 -> + case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> + case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))+ ) `HappyStk` happyRest}}}}++happyReduce_51 = happyReduce 4# 9# happyReduction_51+happyReduction_51 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_52 = happyReduce 4# 9# happyReduction_52+happyReduction_52 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_53 = happyReduce 4# 9# happyReduction_53+happyReduction_53 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut43 happy_x_2 of { (HappyWrap43 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_54 = happySpecReduce_2 9# happyReduction_54+happyReduction_54 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_55 = happySpecReduce_2 9# happyReduction_55+happyReduction_55 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_2 of { (HappyWrap49 happy_var_2) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_56 = happyReduce 8# 9# happyReduction_56+happyReduction_56 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> + case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> + case happyOut55 happy_x_4 of { (HappyWrap55 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + case happyOut71 happy_x_8 of { (HappyWrap71 happy_var_8) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}}}++happyReduce_57 = happyReduce 7# 9# happyReduction_57+happyReduction_57 (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 { happy_var_1 -> + case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> + case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + case happyOut71 happy_x_7 of { (HappyWrap71 happy_var_7) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+ ) `HappyStk` happyRest}}}}}++happyReduce_58 = happyReduce 8# 9# happyReduction_58+happyReduction_58 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> + case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> + case happyOut55 happy_x_4 of { (HappyWrap55 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + case happyOut71 happy_x_8 of { (HappyWrap71 happy_var_8) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}}}++happyReduce_59 = happyReduce 7# 9# happyReduction_59+happyReduction_59 (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 { happy_var_1 -> + case happyOut42 happy_x_2 of { (HappyWrap42 happy_var_2) -> + case happyOut48 happy_x_3 of { (HappyWrap48 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + case happyOut71 happy_x_7 of { (HappyWrap71 happy_var_7) -> + happyIn46+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+ ) `HappyStk` happyRest}}}}}++happyReduce_60 = happySpecReduce_0 10# happyReduction_60+happyReduction_60 = happyIn47+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])+ )++happyReduce_61 = happySpecReduce_3 10# happyReduction_61+happyReduction_61 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut46 happy_x_1 of { (HappyWrap46 happy_var_1) -> + case happyOut47 happy_x_3 of { (HappyWrap47 happy_var_3) -> + happyIn47+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_62 = happyReduce 4# 11# happyReduction_62+happyReduction_62 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut43 happy_x_3 of { (HappyWrap43 happy_var_3) -> + happyIn48+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))+ ) `HappyStk` happyRest}}++happyReduce_63 = happySpecReduce_0 11# happyReduction_63+happyReduction_63 = happyIn48+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition)+ )++happyReduce_64 = happySpecReduce_0 12# happyReduction_64+happyReduction_64 = happyIn49+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition)+ )++happyReduce_65 = happySpecReduce_1 12# happyReduction_65+happyReduction_65 happy_x_1+ = case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> + happyIn49+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.SomeSectionName (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_66 = happySpecReduce_1 13# happyReduction_66+happyReduction_66 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn50+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_67 = happySpecReduce_1 13# happyReduction_67+happyReduction_67 happy_x_1+ = case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> + happyIn50+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.PatternVar (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_68 = happyReduce 5# 13# happyReduction_68+happyReduction_68 (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 { happy_var_1 -> + case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> + case happyOut50 happy_x_4 of { (HappyWrap50 happy_var_4) -> + happyIn50+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_69 = happyReduce 7# 13# happyReduction_69+happyReduction_69 (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 { happy_var_1 -> + case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> + case happyOut50 happy_x_4 of { (HappyWrap50 happy_var_4) -> + case happyOut53 happy_x_6 of { (HappyWrap53 happy_var_6) -> + happyIn50+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_70 = happySpecReduce_1 14# happyReduction_70+happyReduction_70 happy_x_1+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + happyIn51+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_71 = happySpecReduce_2 14# happyReduction_71+happyReduction_71 happy_x_2+ happy_x_1+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> + happyIn51+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_72 = happySpecReduce_1 15# happyReduction_72+happyReduction_72 happy_x_1+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + happyIn52+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_73 = happySpecReduce_1 16# happyReduction_73+happyReduction_73 happy_x_1+ = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> + happyIn53+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_74 = happySpecReduce_3 16# happyReduction_74+happyReduction_74 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> + case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> + happyIn53+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_75 = happySpecReduce_1 17# happyReduction_75+happyReduction_75 happy_x_1+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + happyIn54+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamPattern (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_76 = happyReduce 5# 17# happyReduction_76+happyReduction_76 (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 { happy_var_1 -> + case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn54+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_77 = happyReduce 7# 17# happyReduction_77+happyReduction_77 (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 { happy_var_1 -> + case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + happyIn54+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_78 = happyReduce 7# 17# happyReduction_78+happyReduction_78 (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 { happy_var_1 -> + case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + happyIn54+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_79 = happyReduce 6# 17# happyReduction_79+happyReduction_79 (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 { happy_var_1 -> + case happyOut51 happy_x_2 of { (HappyWrap51 happy_var_2) -> + case happyOut62 happy_x_4 of { (HappyWrap62 happy_var_4) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + happyIn54+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5))+ ) `HappyStk` happyRest}}}}++happyReduce_80 = happySpecReduce_1 18# happyReduction_80+happyReduction_80 happy_x_1+ = case happyOut54 happy_x_1 of { (HappyWrap54 happy_var_1) -> + happyIn55+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_81 = happySpecReduce_2 18# happyReduction_81+happyReduction_81 happy_x_2+ happy_x_1+ = case happyOut54 happy_x_1 of { (HappyWrap54 happy_var_1) -> + case happyOut55 happy_x_2 of { (HappyWrap55 happy_var_2) -> + happyIn55+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_82 = happySpecReduce_1 19# happyReduction_82+happyReduction_82 happy_x_1+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + happyIn56+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPattern (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_83 = happySpecReduce_3 19# happyReduction_83+happyReduction_83 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> + happyIn56+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPatternType (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_84 = happySpecReduce_1 20# happyReduction_84+happyReduction_84 happy_x_1+ = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> + happyIn57+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamType (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_85 = happyReduce 5# 20# happyReduction_85+happyReduction_85 (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 { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_86 = happyReduce 7# 20# happyReduction_86+happyReduction_86 (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 { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_87 = happyReduce 5# 20# happyReduction_87+happyReduction_87 (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 { happy_var_1 -> + case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermTypeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_88 = happyReduce 9# 20# happyReduction_88+happyReduction_88 (happy_x_9 `HappyStk`+ happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + case happyOut71 happy_x_8 of { (HappyWrap71 happy_var_8) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_89 = happyReduce 7# 20# happyReduction_89+happyReduction_89 (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 { happy_var_1 -> + case happyOut50 happy_x_2 of { (HappyWrap50 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.paramVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_90 = happyReduce 6# 20# happyReduction_90+happyReduction_90 (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 { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut62 happy_x_4 of { (HappyWrap62 happy_var_4) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5))+ ) `HappyStk` happyRest}}}}++happyReduce_91 = happySpecReduce_3 21# happyReduction_91+happyReduction_91 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> + happyIn58+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParam (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_92 = happyReduce 4# 21# happyReduction_92+happyReduction_92 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + case happyOut62 happy_x_3 of { (HappyWrap62 happy_var_3) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn58+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_93 = happySpecReduce_1 22# happyReduction_93+happyReduction_93 happy_x_1+ = case happyOut58 happy_x_1 of { (HappyWrap58 happy_var_1) -> + happyIn59+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_94 = happySpecReduce_3 22# happyReduction_94+happyReduction_94 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut58 happy_x_1 of { (HappyWrap58 happy_var_1) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + happyIn59+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_95 = happySpecReduce_3 23# happyReduction_95+happyReduction_95 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> + case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> + happyIn60+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_96 = happySpecReduce_3 23# happyReduction_96+happyReduction_96 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> + case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> + happyIn60+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_97 = happySpecReduce_1 24# happyReduction_97+happyReduction_97 happy_x_1+ = case happyOut60 happy_x_1 of { (HappyWrap60 happy_var_1) -> + happyIn61+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_98 = happySpecReduce_3 24# happyReduction_98+happyReduction_98 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut60 happy_x_1 of { (HappyWrap60 happy_var_1) -> + case happyOut61 happy_x_3 of { (HappyWrap61 happy_var_3) -> + happyIn61+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_99 = happySpecReduce_1 25# happyReduction_99+happyReduction_99 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_100 = happySpecReduce_1 25# happyReduction_100+happyReduction_100 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_101 = happySpecReduce_1 25# happyReduction_101+happyReduction_101 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_102 = happySpecReduce_1 25# happyReduction_102+happyReduction_102 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_103 = happySpecReduce_1 25# happyReduction_103+happyReduction_103 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_104 = happySpecReduce_1 25# happyReduction_104+happyReduction_104 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_105 = happySpecReduce_1 25# happyReduction_105+happyReduction_105 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_106 = happySpecReduce_1 26# happyReduction_106+happyReduction_106 happy_x_1+ = case happyOut62 happy_x_1 of { (HappyWrap62 happy_var_1) -> + happyIn63+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Single (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_107 = happySpecReduce_3 26# happyReduction_107+happyReduction_107 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut62 happy_x_1 of { (HappyWrap62 happy_var_1) -> + case happyOut62 happy_x_3 of { (HappyWrap62 happy_var_3) -> + happyIn63+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Comp (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_108 = happySpecReduce_1 27# happyReduction_108+happyReduction_108 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_109 = happySpecReduce_1 27# happyReduction_109+happyReduction_109 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_110 = happySpecReduce_1 27# happyReduction_110+happyReduction_110 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_111 = happySpecReduce_1 27# happyReduction_111+happyReduction_111 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_112 = happySpecReduce_1 27# happyReduction_112+happyReduction_112 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_113 = happySpecReduce_1 27# happyReduction_113+happyReduction_113 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_114 = happySpecReduce_1 27# happyReduction_114+happyReduction_114 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_115 = happySpecReduce_1 27# happyReduction_115+happyReduction_115 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_116 = happySpecReduce_1 27# happyReduction_116+happyReduction_116 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_117 = happySpecReduce_1 27# happyReduction_117+happyReduction_117 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_118 = happySpecReduce_1 27# happyReduction_118+happyReduction_118 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_119 = happyReduce 4# 27# happyReduction_119+happyReduction_119 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut61 happy_x_3 of { (HappyWrap61 happy_var_3) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))+ ) `HappyStk` happyRest}}++happyReduce_120 = happyReduce 10# 27# happyReduction_120+happyReduction_120 (happy_x_10 `HappyStk`+ happy_x_9 `HappyStk`+ happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + case happyOut71 happy_x_7 of { (HappyWrap71 happy_var_7) -> + case happyOut71 happy_x_9 of { (HappyWrap71 happy_var_9) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOrDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))+ ) `HappyStk` happyRest}}}}}++happyReduce_121 = happySpecReduce_1 27# happyReduction_121+happyReduction_121 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_122 = happyReduce 5# 27# happyReduction_122+happyReduction_122 (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 { happy_var_1 -> + case happyOut57 happy_x_2 of { (HappyWrap57 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_123 = happyReduce 5# 27# happyReduction_123+happyReduction_123 (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 { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_124 = happyReduce 7# 27# happyReduction_124+happyReduction_124 (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 { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + case happyOut72 happy_x_6 of { (HappyWrap72 happy_var_6) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_125 = happySpecReduce_3 27# happyReduction_125+happyReduction_125 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { (HappyWrap62 happy_var_2) -> + case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_126 = happyReduce 5# 27# happyReduction_126+happyReduction_126 (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 { happy_var_1 -> + case happyOut62 happy_x_2 of { (HappyWrap62 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_127 = happySpecReduce_1 27# happyReduction_127+happyReduction_127 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_128 = happySpecReduce_1 27# happyReduction_128+happyReduction_128 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_129 = happySpecReduce_3 27# happyReduction_129+happyReduction_129 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_130 = happyReduce 5# 27# happyReduction_130+happyReduction_130 (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 { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_131 = happyReduce 14# 27# happyReduction_131+happyReduction_131 (happy_x_14 `HappyStk`+ happy_x_13 `HappyStk`+ happy_x_12 `HappyStk`+ happy_x_11 `HappyStk`+ happy_x_10 `HappyStk`+ happy_x_9 `HappyStk`+ happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + case happyOut71 happy_x_7 of { (HappyWrap71 happy_var_7) -> + case happyOut71 happy_x_9 of { (HappyWrap71 happy_var_9) -> + case happyOut71 happy_x_11 of { (HappyWrap71 happy_var_11) -> + case happyOut71 happy_x_13 of { (HappyWrap71 happy_var_13) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13))+ ) `HappyStk` happyRest}}}}}}}++happyReduce_132 = happySpecReduce_1 27# happyReduction_132+happyReduction_132 happy_x_1+ = case happyOut41 happy_x_1 of { (HappyWrap41 happy_var_1) -> + happyIn64+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_133 = happySpecReduce_1 27# happyReduction_133+happyReduction_133 happy_x_1+ = case happyOut42 happy_x_1 of { (HappyWrap42 happy_var_1) -> + happyIn64+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_134 = happySpecReduce_3 27# happyReduction_134+happyReduction_134 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2))+ )}}++happyReduce_135 = happySpecReduce_1 27# happyReduction_135+happyReduction_135 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_136 = happySpecReduce_1 27# happyReduction_136+happyReduction_136 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_137 = happySpecReduce_1 27# happyReduction_137+happyReduction_137 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_138 = happySpecReduce_1 27# happyReduction_138+happyReduction_138 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_139 = happySpecReduce_1 27# happyReduction_139+happyReduction_139 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_140 = happyReduce 5# 27# 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 happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut57 happy_x_2 of { (HappyWrap57 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + happyIn64+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_141 = happySpecReduce_3 28# happyReduction_141+happyReduction_141 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> + case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> + happyIn65+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_142 = happySpecReduce_1 28# happyReduction_142+happyReduction_142 happy_x_1+ = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> + happyIn65+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_143 = happySpecReduce_3 28# happyReduction_143+happyReduction_143 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> + case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> + happyIn65+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_144 = happySpecReduce_3 29# happyReduction_144+happyReduction_144 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> + case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> + happyIn66+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_145 = happySpecReduce_3 29# happyReduction_145+happyReduction_145 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> + case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> + happyIn66+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_146 = happySpecReduce_1 29# happyReduction_146+happyReduction_146 happy_x_1+ = case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> + happyIn66+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_147 = happySpecReduce_3 29# happyReduction_147+happyReduction_147 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> + case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> + happyIn66+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_148 = happySpecReduce_3 29# happyReduction_148+happyReduction_148 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> + case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> + happyIn66+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_149 = happySpecReduce_3 30# happyReduction_149+happyReduction_149 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> + case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> + happyIn67+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_150 = happySpecReduce_1 30# happyReduction_150+happyReduction_150 happy_x_1+ = case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> + happyIn67+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_151 = happySpecReduce_3 30# happyReduction_151+happyReduction_151 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> + case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> + happyIn67+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_152 = happySpecReduce_3 31# happyReduction_152+happyReduction_152 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> + case happyOut68 happy_x_3 of { (HappyWrap68 happy_var_3) -> + happyIn68+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_153 = happySpecReduce_1 31# happyReduction_153+happyReduction_153 happy_x_1+ = case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> + happyIn68+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_154 = happySpecReduce_3 31# happyReduction_154+happyReduction_154 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> + case happyOut68 happy_x_3 of { (HappyWrap68 happy_var_3) -> + happyIn68+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_155 = happySpecReduce_2 32# happyReduction_155+happyReduction_155 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_156 = happySpecReduce_2 32# happyReduction_156+happyReduction_156 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_157 = happySpecReduce_2 32# happyReduction_157+happyReduction_157 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_158 = happySpecReduce_2 32# happyReduction_158+happyReduction_158 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_159 = happySpecReduce_2 32# happyReduction_159+happyReduction_159 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_160 = happySpecReduce_2 32# happyReduction_160+happyReduction_160 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_161 = happySpecReduce_2 32# happyReduction_161+happyReduction_161 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_162 = happySpecReduce_2 32# happyReduction_162+happyReduction_162 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_163 = happyReduce 4# 32# happyReduction_163+happyReduction_163 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> + case happyOut61 happy_x_3 of { (HappyWrap61 happy_var_3) -> + happyIn69+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeRestricted (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ ) `HappyStk` happyRest}}++happyReduce_164 = happySpecReduce_2 32# happyReduction_164+happyReduction_164 happy_x_2+ happy_x_1+ = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.App (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_165 = happySpecReduce_3 32# happyReduction_165+happyReduction_165 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { (HappyWrap63 happy_var_2) -> + case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_166 = happySpecReduce_2 32# happyReduction_166+happyReduction_166 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_167 = happySpecReduce_2 32# happyReduction_167+happyReduction_167 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_168 = happySpecReduce_1 32# happyReduction_168+happyReduction_168 happy_x_1+ = case happyOut64 happy_x_1 of { (HappyWrap64 happy_var_1) -> + happyIn69+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_169 = happySpecReduce_2 32# happyReduction_169+happyReduction_169 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_170 = happySpecReduce_2 32# happyReduction_170+happyReduction_170 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + happyIn69+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_171 = happySpecReduce_3 33# happyReduction_171+happyReduction_171 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut57 happy_x_1 of { (HappyWrap57 happy_var_1) -> + case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> + happyIn70+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_172 = happyReduce 8# 33# happyReduction_172+happyReduction_172 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_173 = happyReduce 9# 33# happyReduction_173+happyReduction_173 (happy_x_9 `HappyStk`+ happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> + case happyOut62 happy_x_5 of { (HappyWrap62 happy_var_5) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + case happyOut70 happy_x_9 of { (HappyWrap70 happy_var_9) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_6) (snd happy_var_9))+ ) `HappyStk` happyRest}}}}}++happyReduce_174 = happyReduce 8# 33# happyReduction_174+happyReduction_174 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> + case happyOut59 happy_x_5 of { (HappyWrap59 happy_var_5) -> + case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_175 = happyReduce 5# 33# happyReduction_175+happyReduction_175 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> + case happyOut71 happy_x_3 of { (HappyWrap71 happy_var_3) -> + case happyOut68 happy_x_5 of { (HappyWrap68 happy_var_5) -> + happyIn70+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeId (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_5))+ ) `HappyStk` happyRest}}}++happyReduce_176 = happySpecReduce_3 33# happyReduction_176+happyReduction_176 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> + case happyOut68 happy_x_3 of { (HappyWrap68 happy_var_3) -> + happyIn70+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_177 = happyReduce 6# 33# happyReduction_177+happyReduction_177 (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 { happy_var_1 -> + case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> + case happyOut71 happy_x_4 of { (HappyWrap71 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_178 = happyReduce 4# 33# 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 { happy_var_1 -> + case happyOut55 happy_x_2 of { (HappyWrap55 happy_var_2) -> + case happyOut70 happy_x_4 of { (HappyWrap70 happy_var_4) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_179 = happyReduce 8# 33# happyReduction_179+happyReduction_179 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut63 happy_x_3 of { (HappyWrap63 happy_var_3) -> + case happyOut56 happy_x_4 of { (HappyWrap56 happy_var_4) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + case happyOut71 happy_x_8 of { (HappyWrap71 happy_var_8) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}}++happyReduce_180 = happySpecReduce_1 33# happyReduction_180+happyReduction_180 happy_x_1+ = case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> + happyIn70+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_181 = happySpecReduce_3 33# happyReduction_181+happyReduction_181 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut57 happy_x_1 of { (HappyWrap57 happy_var_1) -> + case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> + happyIn70+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_182 = happyReduce 8# 33# happyReduction_182+happyReduction_182 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_183 = happyReduce 9# 33# happyReduction_183+happyReduction_183 (happy_x_9 `HappyStk`+ happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> + case happyOut62 happy_x_5 of { (HappyWrap62 happy_var_5) -> + case happyOut71 happy_x_6 of { (HappyWrap71 happy_var_6) -> + case happyOut70 happy_x_9 of { (HappyWrap70 happy_var_9) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_6) (snd happy_var_9))+ ) `HappyStk` happyRest}}}}}++happyReduce_184 = happyReduce 8# 33# happyReduction_184+happyReduction_184 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> + case happyOut59 happy_x_5 of { (HappyWrap59 happy_var_5) -> + case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_185 = happyReduce 4# 33# happyReduction_185+happyReduction_185 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_2 of { (HappyWrap55 happy_var_2) -> + case happyOut70 happy_x_4 of { (HappyWrap70 happy_var_4) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_186 = happyReduce 8# 33# happyReduction_186+happyReduction_186 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut50 happy_x_3 of { (HappyWrap50 happy_var_3) -> + case happyOut71 happy_x_5 of { (HappyWrap71 happy_var_5) -> + case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_187 = happyReduce 8# 33# happyReduction_187+happyReduction_187 (happy_x_8 `HappyStk`+ 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 { happy_var_1 -> + case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> + case happyOut59 happy_x_5 of { (HappyWrap59 happy_var_5) -> + case happyOut70 happy_x_8 of { (HappyWrap70 happy_var_8) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_188 = happySpecReduce_3 34# happyReduction_188+happyReduction_188 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> + case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> + happyIn71+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeAsc (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_189 = happySpecReduce_1 34# happyReduction_189+happyReduction_189 happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + happyIn71+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_190 = happySpecReduce_1 35# happyReduction_190+happyReduction_190 happy_x_1+ = case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> + happyIn72+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_191 = happySpecReduce_3 35# happyReduction_191+happyReduction_191 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> + case happyOut72 happy_x_3 of { (HappyWrap72 happy_var_3) -> + happyIn72+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyTerminalToTok term = case term of {+ PT _ (TS _ 1) -> 2#;+ PT _ (TS _ 2) -> 3#;+ PT _ (TS _ 3) -> 4#;+ PT _ (TS _ 4) -> 5#;+ PT _ (TS _ 5) -> 6#;+ PT _ (TS _ 6) -> 7#;+ PT _ (TS _ 7) -> 8#;+ PT _ (TS _ 8) -> 9#;+ PT _ (TS _ 9) -> 10#;+ PT _ (TS _ 10) -> 11#;+ PT _ (TS _ 11) -> 12#;+ PT _ (TS _ 12) -> 13#;+ PT _ (TS _ 13) -> 14#;+ PT _ (TS _ 14) -> 15#;+ PT _ (TS _ 15) -> 16#;+ PT _ (TS _ 16) -> 17#;+ PT _ (TS _ 17) -> 18#;+ PT _ (TS _ 18) -> 19#;+ PT _ (TS _ 19) -> 20#;+ PT _ (TS _ 20) -> 21#;+ PT _ (TS _ 21) -> 22#;+ PT _ (TS _ 22) -> 23#;+ PT _ (TS _ 23) -> 24#;+ PT _ (TS _ 24) -> 25#;+ PT _ (TS _ 25) -> 26#;+ PT _ (TS _ 26) -> 27#;+ PT _ (TS _ 27) -> 28#;+ PT _ (TS _ 28) -> 29#;+ PT _ (TS _ 29) -> 30#;+ PT _ (TS _ 30) -> 31#;+ PT _ (TS _ 31) -> 32#;+ PT _ (TS _ 32) -> 33#;+ PT _ (TS _ 33) -> 34#;+ PT _ (TS _ 34) -> 35#;+ PT _ (TS _ 35) -> 36#;+ PT _ (TS _ 36) -> 37#;+ PT _ (TS _ 37) -> 38#;+ PT _ (TS _ 38) -> 39#;+ PT _ (TS _ 39) -> 40#;+ PT _ (TS _ 40) -> 41#;+ PT _ (TS _ 41) -> 42#;+ PT _ (TS _ 42) -> 43#;+ PT _ (TS _ 43) -> 44#;+ PT _ (TS _ 44) -> 45#;+ PT _ (TS _ 45) -> 46#;+ PT _ (TS _ 46) -> 47#;+ PT _ (TS _ 47) -> 48#;+ PT _ (TS _ 48) -> 49#;+ PT _ (TS _ 49) -> 50#;+ PT _ (TS _ 50) -> 51#;+ PT _ (TS _ 51) -> 52#;+ PT _ (TS _ 52) -> 53#;+ PT _ (TS _ 53) -> 54#;+ PT _ (TS _ 54) -> 55#;+ PT _ (TS _ 55) -> 56#;+ PT _ (TS _ 56) -> 57#;+ PT _ (TS _ 57) -> 58#;+ PT _ (TS _ 58) -> 59#;+ PT _ (TS _ 59) -> 60#;+ PT _ (TS _ 60) -> 61#;+ PT _ (TS _ 61) -> 62#;+ PT _ (TS _ 62) -> 63#;+ PT _ (TS _ 63) -> 64#;+ PT _ (TS _ 64) -> 65#;+ PT _ (TS _ 65) -> 66#;+ PT _ (TS _ 66) -> 67#;+ PT _ (TS _ 67) -> 68#;+ PT _ (TS _ 68) -> 69#;+ PT _ (TS _ 69) -> 70#;+ PT _ (TS _ 70) -> 71#;+ PT _ (TS _ 71) -> 72#;+ PT _ (TS _ 72) -> 73#;+ PT _ (TS _ 73) -> 74#;+ PT _ (TS _ 74) -> 75#;+ PT _ (TS _ 75) -> 76#;+ PT _ (TS _ 76) -> 77#;+ PT _ (TS _ 77) -> 78#;+ PT _ (TS _ 78) -> 79#;+ PT _ (TS _ 79) -> 80#;+ PT _ (TS _ 80) -> 81#;+ PT _ (TS _ 81) -> 82#;+ PT _ (TS _ 82) -> 83#;+ PT _ (TS _ 83) -> 84#;+ PT _ (TS _ 84) -> 85#;+ PT _ (TS _ 85) -> 86#;+ PT _ (TS _ 86) -> 87#;+ PT _ (TS _ 87) -> 88#;+ PT _ (TS _ 88) -> 89#;+ PT _ (TS _ 89) -> 90#;+ PT _ (TS _ 90) -> 91#;+ PT _ (TS _ 91) -> 92#;+ PT _ (TS _ 92) -> 93#;+ PT _ (TS _ 93) -> 94#;+ PT _ (TS _ 94) -> 95#;+ PT _ (TS _ 95) -> 96#;+ PT _ (TS _ 96) -> 97#;+ PT _ (TS _ 97) -> 98#;+ PT _ (TS _ 98) -> 99#;+ PT _ (TS _ 99) -> 100#;+ PT _ (TL _) -> 101#;+ PT _ (T_VarIdentToken _) -> 102#;+ PT _ (T_HoleIdentToken _) -> 103#;+ _ -> -1#;+ }+{-# NOINLINE happyTerminalToTok #-}++happyLex kend _kmore [] = kend notHappyAtAll []+happyLex _kend kmore (tk:tks) = kmore (happyTerminalToTok tk) tk tks+{-# INLINE happyLex #-}++happyNewToken action sts stk = happyLex (\tk -> happyDoAction 104# notHappyAtAll action sts stk) (\i tk -> happyDoAction i tk action sts stk)++happyReport 104# tk explist resume tks = happyReport' tks explist resume+happyReport _ tk explist resume tks = happyReport' (tk:tks) explist (\tks -> resume (Happy_Prelude.tail tks))+++happyThen :: () => (Err a) -> (a -> (Err b)) -> (Err b)+happyThen = ((>>=))+happyReturn :: () => a -> (Err a)+happyReturn = (return)+happyThen1 m k tks = ((>>=)) m (\a -> k a tks)+happyFmap1 f m tks = happyThen (m tks) (\a -> happyReturn (f a))+happyReturn1 :: () => a -> b -> (Err a)+happyReturn1 = \a tks -> (return) a+happyReport' :: () => [(Token)] -> [Happy_Prelude.String] -> ([(Token)] -> (Err a)) -> (Err a)+happyReport' = (\tokens expected resume -> happyError tokens)++happyAbort :: () => [(Token)] -> (Err a)+happyAbort = Happy_Prelude.error "Called abort handler in non-resumptive parser"++pModule_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 0# tks) (\x -> happyReturn (let {(HappyWrap40 x') = happyOut40 x} in x'))++pHoleIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 1# tks) (\x -> happyReturn (let {(HappyWrap41 x') = happyOut41 x} in x'))++pVarIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 2# tks) (\x -> happyReturn (let {(HappyWrap42 x') = happyOut42 x} in x'))++pListVarIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 3# tks) (\x -> happyReturn (let {(HappyWrap43 x') = happyOut43 x} in x'))++pLanguageDecl_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 4# tks) (\x -> happyReturn (let {(HappyWrap44 x') = happyOut44 x} in x'))++pLanguage_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 5# tks) (\x -> happyReturn (let {(HappyWrap45 x') = happyOut45 x} in x'))++pCommand_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 6# tks) (\x -> happyReturn (let {(HappyWrap46 x') = happyOut46 x} in x'))++pListCommand_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 7# tks) (\x -> happyReturn (let {(HappyWrap47 x') = happyOut47 x} in x'))++pDeclUsedVars_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 8# tks) (\x -> happyReturn (let {(HappyWrap48 x') = happyOut48 x} in x'))++pSectionName_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 9# tks) (\x -> happyReturn (let {(HappyWrap49 x') = happyOut49 x} in x'))++pPattern_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 10# tks) (\x -> happyReturn (let {(HappyWrap50 x') = happyOut50 x} in x'))++pListPattern_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 11# tks) (\x -> happyReturn (let {(HappyWrap51 x') = happyOut51 x} in x'))++pPattern1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 12# tks) (\x -> happyReturn (let {(HappyWrap52 x') = happyOut52 x} in x'))++pListPattern1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 13# tks) (\x -> happyReturn (let {(HappyWrap53 x') = happyOut53 x} in x'))++pParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 14# tks) (\x -> happyReturn (let {(HappyWrap54 x') = happyOut54 x} in x'))++pListParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 15# tks) (\x -> happyReturn (let {(HappyWrap55 x') = happyOut55 x} in x'))++pBind_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 16# tks) (\x -> happyReturn (let {(HappyWrap56 x') = happyOut56 x} in x'))++pParamDecl_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 17# tks) (\x -> happyReturn (let {(HappyWrap57 x') = happyOut57 x} in x'))++pSigmaParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 18# tks) (\x -> happyReturn (let {(HappyWrap58 x') = happyOut58 x} in x'))++pListSigmaParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 19# tks) (\x -> happyReturn (let {(HappyWrap59 x') = happyOut59 x} in x'))++pRestriction_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 20# tks) (\x -> happyReturn (let {(HappyWrap60 x') = happyOut60 x} in x'))++pListRestriction_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 21# tks) (\x -> happyReturn (let {(HappyWrap61 x') = happyOut61 x} in x'))++pModality_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 22# tks) (\x -> happyReturn (let {(HappyWrap62 x') = happyOut62 x} in x'))++pModComp_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 23# tks) (\x -> happyReturn (let {(HappyWrap63 x') = happyOut63 x} in x'))++pTerm7_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 24# tks) (\x -> happyReturn (let {(HappyWrap64 x') = happyOut64 x} in x'))++pTerm5_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 25# tks) (\x -> happyReturn (let {(HappyWrap65 x') = happyOut65 x} in x'))++pTerm4_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 26# tks) (\x -> happyReturn (let {(HappyWrap66 x') = happyOut66 x} in x'))++pTerm3_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 27# tks) (\x -> happyReturn (let {(HappyWrap67 x') = happyOut67 x} in x'))++pTerm2_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 28# tks) (\x -> happyReturn (let {(HappyWrap68 x') = happyOut68 x} in x'))++pTerm6_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 29# tks) (\x -> happyReturn (let {(HappyWrap69 x') = happyOut69 x} in x'))++pTerm1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 30# tks) (\x -> happyReturn (let {(HappyWrap70 x') = happyOut70 x} in x'))++pTerm_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 31# tks) (\x -> happyReturn (let {(HappyWrap71 x') = happyOut71 x} in x'))++pListTerm_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 32# tks) (\x -> happyReturn (let {(HappyWrap72 x') = happyOut72 x} in x'))++happySeq = happyDontSeq+++type Err = Either String++happyError :: [Token] -> Err a+happyError ts = Left $+ "syntax error at " ++ tokenPos ts +++ case ts of+ [] -> []+ [Err _] -> " due to lexer error"+ t:_ -> " before `" ++ (prToken t) ++ "'"++myLexer :: Data.Text.Text -> [Token]+myLexer = tokens++-- Entrypoints++pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module+pModule = fmap snd . pModule_internal++pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent+pHoleIdent = fmap snd . pHoleIdent_internal++pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent+pVarIdent = fmap snd . pVarIdent_internal++pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]+pListVarIdent = fmap snd . pListVarIdent_internal++pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl+pLanguageDecl = fmap snd . pLanguageDecl_internal++pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language+pLanguage = fmap snd . pLanguage_internal++pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command+pCommand = fmap snd . pCommand_internal++pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]+pListCommand = fmap snd . pListCommand_internal++pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars+pDeclUsedVars = fmap snd . pDeclUsedVars_internal++pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName+pSectionName = fmap snd . pSectionName_internal++pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern+pPattern = fmap snd . pPattern_internal++pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]+pListPattern = fmap snd . pListPattern_internal++pPattern1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern+pPattern1 = fmap snd . pPattern1_internal++pListPattern1 :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]+pListPattern1 = fmap snd . pListPattern1_internal++pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param+pParam = fmap snd . pParam_internal++pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]+pListParam = fmap snd . pListParam_internal++pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind+pBind = fmap snd . pBind_internal++pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl+pParamDecl = fmap snd . pParamDecl_internal++pSigmaParam :: [Token] -> Err Language.Rzk.Syntax.Abs.SigmaParam+pSigmaParam = fmap snd . pSigmaParam_internal++pListSigmaParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.SigmaParam]+pListSigmaParam = fmap snd . pListSigmaParam_internal++pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction+pRestriction = fmap snd . pRestriction_internal++pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]+pListRestriction = fmap snd . pListRestriction_internal++pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality+pModality = fmap snd . pModality_internal++pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp+pModComp = fmap snd . pModComp_internal++pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm7 = fmap snd . pTerm7_internal++pTerm5 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm5 = fmap snd . pTerm5_internal++pTerm4 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm4 = fmap snd . pTerm4_internal++pTerm3 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm3 = fmap snd . pTerm3_internal++pTerm2 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm2 = fmap snd . pTerm2_internal++pTerm6 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm6 = fmap snd . pTerm6_internal++pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm1 = fmap snd . pTerm1_internal++pTerm :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm = fmap snd . pTerm_internal++pListTerm :: [Token] -> Err [Language.Rzk.Syntax.Abs.Term]+pListTerm = fmap snd . pListTerm_internal+#define HAPPY_COERCE 1+-- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $++#if !defined(__GLASGOW_HASKELL__)+# error This code isn't being built with GHC.+#endif++-- Get WORDS_BIGENDIAN (if defined)+#include "MachDeps.h"++-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.+#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Happy_Prelude.Bool)+#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Happy_Prelude.Bool)+#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Happy_Prelude.Bool)+#define PLUS(n,m) (n Happy_GHC_Exts.+# m)+#define MINUS(n,m) (n Happy_GHC_Exts.-# m)+#define TIMES(n,m) (n Happy_GHC_Exts.*# m)+#define NEGATE(n) (Happy_GHC_Exts.negateInt# (n))++type Happy_Int = Happy_GHC_Exts.Int#+data Happy_IntList = HappyCons Happy_Int Happy_IntList++#define INVALID_TOK -1#+#define ERROR_TOK 0#+#define CATCH_TOK 1#++#if defined(HAPPY_COERCE)+# define GET_ERROR_TOKEN(x) (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# i) -> i })+# define MK_ERROR_TOKEN(i) (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# i))+# define MK_TOKEN(x) (happyInTok (x))+#else+# define GET_ERROR_TOKEN(x) (case x of { HappyErrorToken (Happy_GHC_Exts.I# i) -> i })+# define MK_ERROR_TOKEN(i) (HappyErrorToken (Happy_GHC_Exts.I# i))+# define MK_TOKEN(x) (HappyTerminal (x))+#endif++#if defined(HAPPY_DEBUG)+# define DEBUG_TRACE(s) (happyTrace (s)) Happy_Prelude.$+happyTrace string expr = Happy_System_IO_Unsafe.unsafePerformIO Happy_Prelude.$ do+ Happy_System_IO.hPutStr Happy_System_IO.stderr string+ Happy_Prelude.return expr+#else+# define DEBUG_TRACE(s) {- nothing -}+#endif++infixr 9 `HappyStk`+data HappyStk a = HappyStk a (HappyStk a)++-----------------------------------------------------------------------------+-- starting the parse++happyDoParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll++-----------------------------------------------------------------------------+-- Accepting the parse++-- If the current token is ERROR_TOK, it means we've just accepted a partial+-- parse (a %partial parser). We must ignore the saved token on the top of+-- the stack in this case.+happyAccept ERROR_TOK tk st sts (_ `HappyStk` ans `HappyStk` _) =+ happyReturn1 ans+happyAccept j tk st sts (HappyStk ans _) =+ (happyTcHack j (happyTcHack st)) (happyReturn1 ans)++-----------------------------------------------------------------------------+-- Arrays only: do the next action++happyDoAction i tk st =+ DEBUG_TRACE("state: " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.+++ ",\ttoken: " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.+++ ",\taction: ")+ case happyDecodeAction (happyNextAction i st) of+ HappyFail -> DEBUG_TRACE("failing.\n")+ happyFail i tk st+ HappyAccept -> DEBUG_TRACE("accept.\n")+ happyAccept i tk st+ HappyReduce rule -> DEBUG_TRACE("reduce (rule " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# rule) Happy_Prelude.++ ")")+ (happyReduceArr Happy_Data_Array.! (Happy_GHC_Exts.I# rule)) i tk st+ HappyShift new_state -> DEBUG_TRACE("shift, enter state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# new_state) Happy_Prelude.++ "\n")+ happyShift new_state i tk st++{-# INLINE happyNextAction #-}+happyNextAction i st = case happyIndexActionTable i st of+ Happy_Prelude.Just (Happy_GHC_Exts.I# act) -> act+ Happy_Prelude.Nothing -> happyIndexOffAddr happyDefActions st++{-# INLINE happyIndexActionTable #-}+happyIndexActionTable i st+ | GTE(i, 0#), GTE(off, 0#), EQ(happyIndexOffAddr happyCheck off, i)+ -- i >= 0: Guard against INVALID_TOK (do the default action, which ultimately errors)+ -- off >= 0: Otherwise it's a default action+ -- equality check: Ensure that the entry in the compressed array is owned by st+ = Happy_Prelude.Just (Happy_GHC_Exts.I# (happyIndexOffAddr happyTable off))+ | Happy_Prelude.otherwise+ = Happy_Prelude.Nothing+ where+ off = PLUS(happyIndexOffAddr happyActOffsets st, i)++data HappyAction+ = HappyFail+ | HappyAccept+ | HappyReduce Happy_Int -- rule number+ | HappyShift Happy_Int -- new state+ deriving Happy_Prelude.Show++{-# INLINE happyDecodeAction #-}+happyDecodeAction :: Happy_Int -> HappyAction+happyDecodeAction 0# = HappyFail+happyDecodeAction -1# = HappyAccept+happyDecodeAction action | LT(action, 0#) = HappyReduce NEGATE(PLUS(action, 1#))+ | Happy_Prelude.otherwise = HappyShift MINUS(action, 1#)++{-# INLINE happyIndexGotoTable #-}+happyIndexGotoTable nt st = happyIndexOffAddr happyTable off+ where+ off = PLUS(happyIndexOffAddr happyGotoOffsets st, nt)++{-# INLINE happyIndexOffAddr #-}+happyIndexOffAddr :: HappyAddr -> Happy_Int -> Happy_Int+happyIndexOffAddr (HappyA# arr) off =+#if __GLASGOW_HASKELL__ >= 901+ Happy_GHC_Exts.int32ToInt# -- qualified import because it doesn't exist on older GHC's+#endif+#ifdef WORDS_BIGENDIAN+ -- The CI of `alex` tests this code path+ (Happy_GHC_Exts.word32ToInt32# (Happy_GHC_Exts.wordToWord32# (Happy_GHC_Exts.byteSwap32# (Happy_GHC_Exts.word32ToWord# (Happy_GHC_Exts.int32ToWord32#+#endif+ (Happy_GHC_Exts.indexInt32OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+ )))))+#endif++happyIndexRuleArr :: Happy_Int -> (# Happy_Int, Happy_Int #)+happyIndexRuleArr r = (# nt, len #)+ where+ !(Happy_GHC_Exts.I# n_starts) = happy_n_starts+ offs = TIMES(MINUS(r,n_starts),2#)+ nt = happyIndexOffAddr happyRuleArr offs+ len = happyIndexOffAddr happyRuleArr PLUS(offs,1#)++data HappyAddr = HappyA# Happy_GHC_Exts.Addr#++-----------------------------------------------------------------------------+-- Shifting a token++happyShift new_state ERROR_TOK tk st sts stk@(x `HappyStk` _) =+ -- See "Error Fixup" below+ let i = GET_ERROR_TOKEN(x) in+ DEBUG_TRACE("shifting the error token")+ happyDoAction i tk new_state (HappyCons st sts) stk++happyShift new_state i tk st sts stk =+ happyNewToken new_state (HappyCons st sts) (MK_TOKEN(tk) `HappyStk` stk)++-- happyReduce is specialised for the common cases.++happySpecReduce_0 nt fn j tk st sts stk+ = happySeq fn (happyGoto nt j tk st (HappyCons st sts) (fn `HappyStk` stk))++happySpecReduce_1 nt fn j tk old_st sts@(HappyCons st _) (v1 `HappyStk` stk')+ = let r = fn v1 in+ happyTcHack old_st (happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')))++happySpecReduce_2 nt fn j tk old_st+ (HappyCons _ sts@(HappyCons st _))+ (v1 `HappyStk` v2 `HappyStk` stk')+ = let r = fn v1 v2 in+ happyTcHack old_st (happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')))++happySpecReduce_3 nt fn j tk old_st+ (HappyCons _ (HappyCons _ sts@(HappyCons st _)))+ (v1 `HappyStk` v2 `HappyStk` v3 `HappyStk` stk')+ = let r = fn v1 v2 v3 in+ happyTcHack old_st (happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')))++happyReduce k nt fn j tk st sts stk+ = case happyDrop MINUS(k,(1# :: Happy_Int)) sts of+ sts1@(HappyCons st1 _) ->+ let r = fn stk in -- it doesn't hurt to always seq here...+ st `happyTcHack` happyDoSeq r (happyGoto nt j tk st1 sts1 r)++happyMonadReduce k nt fn j tk st sts stk =+ case happyDrop k (HappyCons st sts) of+ sts1@(HappyCons st1 _) ->+ let drop_stk = happyDropStk k stk in+ j `happyTcHack` happyThen1 (fn stk tk)+ (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))++happyMonad2Reduce k nt fn j tk st sts stk =+ case happyDrop k (HappyCons st sts) of+ sts1@(HappyCons st1 _) ->+ let drop_stk = happyDropStk k stk+ off = happyIndexOffAddr happyGotoOffsets st1+ off_i = PLUS(off, nt)+ new_state = happyIndexOffAddr happyTable off_i+ in+ j `happyTcHack` happyThen1 (fn stk tk)+ (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))++happyDrop 0# l = l+happyDrop n (HappyCons _ t) = happyDrop MINUS(n,(1# :: Happy_Int)) t++happyDropStk 0# l = l+happyDropStk n (x `HappyStk` xs) = happyDropStk MINUS(n,(1#::Happy_Int)) xs++-----------------------------------------------------------------------------+-- Moving to a new state after a reduction++happyGoto nt j tk st =+ DEBUG_TRACE(", goto state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# new_state) Happy_Prelude.++ "\n")+ happyDoAction j tk new_state+ where new_state = happyIndexGotoTable nt st++{- Note [Error recovery]+~~~~~~~~~~~~~~~~~~~~~~~~+When there is no applicable action for the current lookahead token `tk`,+happy enters error recovery mode. Depending on whether the grammar file+declares the two action form `%error { abort } { report }` for+ Resumptive Error Handling,+it works in one (not resumptive) or two phases (resumptive):++ 1. Fixup mode:+ Try to see if there is an action for the error token ERROR_TOK. If there+ is, do *not* emit an error and pretend instead that an `error` token was+ inserted.+ When there is no ERROR_TOK action, report an error.++ In non-resumptive error handling, calling the single error handler+ (e.g. `happyError`) will throw an exception and abort the parser.+ However, in resumptive error handling we enter *error resumption mode*.++ 2. Error resumption mode:+ After reporting the error (with `report`), happy will attempt to find+ a good state stack to resume parsing in.+ For each candidate stack, it discards input until one of the candidates+ resumes (i.e. shifts the current input).+ If no candidate resumes before the end of input, resumption failed and+ calls the `abort` function, to much the same effect as in non-resumptive+ error handling.++ Candidate stacks are declared by the grammar author using the special+ `catch` terminal and called "catch frames".+ This mechanism is described in detail in Note [happyResume].++The `catch` resumption mechanism (2) is what usually is associated with+`error` in `bison` or `menhir`. Since `error` is used for the Fixup mechanism+(1) above, we call the corresponding token `catch`.+Furthermore, in constrast to `bison`, our implementation of `catch`+non-deterministically considers multiple catch frames on the stack for+resumption (See Note [Multiple catch frames]).++Note [happyResume]+~~~~~~~~~~~~~~~~~~+`happyResume` implements the resumption mechanism from Note [Error recovery].+It is best understood by example. Consider++Exp :: { String }+Exp : '1' { "1" }+ | catch { "catch" }+ | Exp '+' Exp %shift { $1 Happy_Prelude.++ " + " Happy_Prelude.++ $3 } -- %shift: associate 1 + 1 + 1 to the right+ | '(' Exp ')' { "(" Happy_Prelude.++ $2 Happy_Prelude.++ ")" }++The idea of the use of `catch` here is that upon encountering a parse error+during expression parsing, we can gracefully degrade using the `catch` rule,+still producing a partial syntax tree and keep on parsing to find further+syntax errors.++Let's trace the parser state for input 11+1, which will error out after shifting 1.+After shifting, we have the following item stack (growing downwards and omitting+transitive closure items):++ State 0: %start_parseExp -> . Exp+ State 5: Exp -> '1' .++(Stack as a list of state numbers: [5,0].)+As Note [Error recovery] describes, we will first try Fixup mode.+That fails because no production can shift the `error` token.+Next we try Error resumption mode. This works as follows:++ 1. Pop off the item stack until we find an item that can shift the `catch`+ token. (Implemented in `pop_items`.)+ * State 5 cannot shift catch. Pop.+ * State 0 can shift catch, which would transition into+ State 4: Exp -> catch .+ So record the *stack* `[4,0]` after doing the shift transition.+ We call this a *catch frame*, where the top is a *catch state*,+ corresponding to an item in which we just shifted a `catch` token.+ There can be multiple such catch stacks, see Note [Multiple catch frames].++ 2. Discard tokens from the input until the lookahead can be shifted in one+ of the catch stacks. (Implemented in `discard_input_until_exp` and+ `some_catch_state_shifts`.)+ * We cannot shift the current lookahead '1' in state 4, so we discard+ * We *can* shift the next lookahead '+' in state 4, but only after+ reducing, which pops State 4 and goes to State 3:+ State 3: %start_parseExp -> Exp .+ Exp -> Exp . '+' Exp+ Here we can shift '+'.+ As you can see, to implement this machinery we need to simulate+ the operation of the LALR automaton, especially reduction+ (`happySimulateReduce`).++Note [Multiple catch frames]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~+For fewer spurious error messages, it can be beneficial to trace multiple catch+items. Consider++Exp : '1'+ | catch+ | Exp '+' Exp %shift+ | '(' Exp ')'++Let's trace the parser state for input (;+1, which will error out after shifting (.+After shifting, we have the following item stack (growing downwards):++ State 0: %start_parseExp -> . Exp+ State 6: Exp -> '(' . Exp ')'++Upon error, we want to find items in the stack which can shift a catch token.+Note that both State 0 and State 6 can shift a catch token, transitioning into+ State 4: Exp -> catch .+Hence we record the catch frames `[4,6,0]` and `[4,0]` for possible resumption.++Which catch frame do we pick for resumption?+Note that resuming catch frame `[4,0]` will parse as "catch+1", whereas+resuming the innermost frame `[4,6,0]` corresponds to parsing "(catch+1".+The latter would keep discarding input until the closing ')' is found.+So we will discard + and 1, leading to a spurious syntax error at the end of+input, aborting the parse and never producing a partial syntax tree. Bad!++It is far preferable to resume with catch frame `[4,0]`, where we can resume+successfully on input +, so that is what we do.++In general, we pick the catch frame for resumption that discards the least+amount of input for a successful shift, preferring the topmost such catch frame.+-}++-- happyFail :: Happy_Int -> Token -> Happy_Int -> _+-- This function triggers Note [Error recovery].+-- If the current token is ERROR_TOK, phase (1) has failed and we might try+-- phase (2).+happyFail ERROR_TOK = happyFixupFailed+happyFail i = happyTryFixup i++-- Enter Error Fixup (see Note [Error recovery]):+-- generate an error token, save the old token and carry on.+-- When a `happyShift` accepts the error token, we will pop off the error token+-- to resume parsing with the current lookahead `i`.+happyTryFixup i tk action sts stk =+ DEBUG_TRACE("entering `error` fixup.\n")+ happyDoAction ERROR_TOK tk action sts (MK_ERROR_TOKEN(i) `HappyStk` stk)+ -- NB: `happyShift` will simply pop the error token and carry on with+ -- `tk`. Hence we don't change `tk` in the call here++-- See Note [Error recovery], phase (2).+-- Enter resumption mode after reporting the error by calling `happyResume`.+happyFixupFailed tk st sts (x `HappyStk` stk) =+ let i = GET_ERROR_TOKEN(x) in+ DEBUG_TRACE("`error` fixup failed.\n")+ let resume = happyResume i tk st sts stk+ expected = happyExpectedTokens st sts in+ happyReport i tk expected resume++-- happyResume :: Happy_Int -> Token -> Happy_Int -> _+-- See Note [happyResume]+happyResume i tk st sts stk = pop_items [] st sts stk+ where+ !(Happy_GHC_Exts.I# n_starts) = happy_n_starts -- this is to test whether we have a start token+ !(Happy_GHC_Exts.I# eof_i) = happy_n_terms Happy_Prelude.- 1 -- this is the token number of the EOF token+ happy_list_to_list :: Happy_IntList -> [Happy_Prelude.Int]+ happy_list_to_list (HappyCons st sts)+ | LT(st, n_starts)+ = [(Happy_GHC_Exts.I# st)]+ | Happy_Prelude.otherwise+ = (Happy_GHC_Exts.I# st) : happy_list_to_list sts++ -- See (1) of Note [happyResume]+ pop_items catch_frames st sts stk+ | LT(st, n_starts)+ = DEBUG_TRACE("reached start state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ ", ")+ if Happy_Prelude.null catch_frames_new+ then DEBUG_TRACE("no resumption.\n")+ happyAbort+ else DEBUG_TRACE("now discard input, trying to anchor in states " Happy_Prelude.++ Happy_Prelude.show (Happy_Prelude.map (happy_list_to_list . Happy_Prelude.fst) (Happy_Prelude.reverse catch_frames_new)) Happy_Prelude.++ ".\n")+ discard_input_until_exp i tk (Happy_Prelude.reverse catch_frames_new)+ | (HappyCons st1 sts1) <- sts, _ `HappyStk` stk1 <- stk+ = pop_items catch_frames_new st1 sts1 stk1+ where+ !catch_frames_new+ | HappyShift new_state <- happyDecodeAction (happyNextAction CATCH_TOK st)+ , DEBUG_TRACE("can shift catch token in state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ ", into state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# new_state) Happy_Prelude.++ "\n")+ Happy_Prelude.null (Happy_Prelude.filter (\(HappyCons _ (HappyCons h _),_) -> EQ(st,h)) catch_frames)+ = (HappyCons new_state (HappyCons st sts), MK_ERROR_TOKEN(i) `HappyStk` stk):catch_frames -- MK_ERROR_TOKEN(i) is just some dummy that should not be accessed by user code+ | Happy_Prelude.otherwise+ = DEBUG_TRACE("already shifted or can't shift catch in " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ "\n")+ catch_frames++ -- See (2) of Note [happyResume]+ discard_input_until_exp i tk catch_frames+ | Happy_Prelude.Just (HappyCons st (HappyCons catch_st sts), catch_frame) <- some_catch_state_shifts i catch_frames+ = DEBUG_TRACE("found expected token in state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ " after shifting from " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# catch_st) Happy_Prelude.++ ": " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++ "\n")+ happyDoAction i tk st (HappyCons catch_st sts) catch_frame+ | EQ(i,eof_i) -- is i EOF?+ = DEBUG_TRACE("reached EOF, cannot resume. abort parse :(\n")+ happyAbort+ | Happy_Prelude.otherwise+ = DEBUG_TRACE("discard token " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++ "\n")+ happyLex (\eof_tk -> discard_input_until_exp eof_i eof_tk catch_frames) -- eof+ (\i tk -> discard_input_until_exp i tk catch_frames) -- not eof++ some_catch_state_shifts _ [] = DEBUG_TRACE("no catch state could shift.\n") Happy_Prelude.Nothing+ some_catch_state_shifts i catch_frames@(((HappyCons st sts),_):_) = try_head i st sts catch_frames+ where+ try_head i st sts catch_frames = -- PRECONDITION: head catch_frames = (HappyCons st sts)+ DEBUG_TRACE("trying token " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++ " in state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ ": ")+ case happyDecodeAction (happyNextAction i st) of+ HappyFail -> DEBUG_TRACE("fail.\n") some_catch_state_shifts i (Happy_Prelude.tail catch_frames)+ HappyAccept -> DEBUG_TRACE("accept.\n") Happy_Prelude.Just (Happy_Prelude.head catch_frames)+ HappyShift _ -> DEBUG_TRACE("shift.\n") Happy_Prelude.Just (Happy_Prelude.head catch_frames)+ HappyReduce r -> case happySimulateReduce r st sts of+ (HappyCons st1 sts1) -> try_head i st1 sts1 catch_frames++happySimulateReduce r st sts =+ DEBUG_TRACE("simulate reduction of rule " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# r) Happy_Prelude.++ ", ")+ let (# nt, len #) = happyIndexRuleArr r in+ DEBUG_TRACE("nt " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# nt) Happy_Prelude.++ ", len: " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# len) Happy_Prelude.++ ", new_st ")+ let !(sts1@(HappyCons st1 _)) = happyDrop len (HappyCons st sts)+ new_st = happyIndexGotoTable nt st1 in+ DEBUG_TRACE(Happy_Prelude.show (Happy_GHC_Exts.I# new_st) Happy_Prelude.++ ".\n")+ (HappyCons new_st sts1)++happyTokenToString :: Happy_Prelude.Int -> Happy_Prelude.String+happyTokenToString i = happyTokenStrings Happy_Prelude.!! (i Happy_Prelude.- 2) -- 2: errorTok, catchTok++happyExpectedTokens :: Happy_Int -> Happy_IntList -> [Happy_Prelude.String]+-- Upon a parse error, we want to suggest tokens that are expected in that+-- situation. This function computes such tokens.+-- It works by examining the top of the state stack.+-- For every token number that does a shift transition, record that token number.+-- For every token number that does a reduce transition, simulate that reduction+-- on the state state stack and repeat.+-- The recorded token numbers are then formatted with 'happyTokenToString' and+-- returned.+happyExpectedTokens st sts =+ DEBUG_TRACE("constructing expected tokens.\n")+ Happy_Prelude.map happyTokenToString (search_shifts st sts [])+ where+ search_shifts st sts shifts = Happy_Prelude.foldr (add_action st sts) shifts (distinct_actions st)+ add_action st sts (Happy_GHC_Exts.I# i, Happy_GHC_Exts.I# act) shifts =+ DEBUG_TRACE("found action in state " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# st) Happy_Prelude.++ ", input " Happy_Prelude.++ Happy_Prelude.show (Happy_GHC_Exts.I# i) Happy_Prelude.++ ", " Happy_Prelude.++ Happy_Prelude.show (happyDecodeAction act) Happy_Prelude.++ "\n")+ case happyDecodeAction act of+ HappyFail -> shifts+ HappyAccept -> shifts -- This would always be %eof or error... Not helpful+ HappyShift _ -> Happy_Prelude.insert (Happy_GHC_Exts.I# i) shifts+ HappyReduce r -> case happySimulateReduce r st sts of+ (HappyCons st1 sts1) -> search_shifts st1 sts1 shifts+ distinct_actions st+ -- The (token number, action) pairs of all actions in the given state+ = ((-1), (Happy_GHC_Exts.I# (happyIndexOffAddr happyDefActions st)))+ : [ (i, act) | i <- [begin_i..happy_n_terms], act <- get_act row_off i ]+ where+ row_off = happyIndexOffAddr happyActOffsets st+ begin_i = 2 -- +2: errorTok,catchTok+ get_act off (Happy_GHC_Exts.I# i) -- happyIndexActionTable with cached row offset+ | let off_i = PLUS(off,i)+ , GTE(off_i,0#)+ , EQ(happyIndexOffAddr happyCheck off_i,i)+ = [(Happy_GHC_Exts.I# (happyIndexOffAddr happyTable off_i))]+ | Happy_Prelude.otherwise+ = []++-- Internal happy errors:++notHappyAtAll :: a+notHappyAtAll = Happy_Prelude.error "Internal Happy parser panic. This is not supposed to happen! Please open a bug report at https://github.com/haskell/happy/issues.\n"++-----------------------------------------------------------------------------+-- Hack to get the typechecker to accept our action functions++happyTcHack :: Happy_Int -> a -> a+happyTcHack x y = y+{-# INLINE happyTcHack #-}++-----------------------------------------------------------------------------+-- Seq-ing. If the --strict flag is given, then Happy emits+-- happySeq = happyDoSeq+-- otherwise it emits+-- happySeq = happyDontSeq++happyDoSeq, happyDontSeq :: a -> b -> b+happyDoSeq a b = a `Happy_GHC_Exts.seq` b+happyDontSeq a b = b++-----------------------------------------------------------------------------+-- Don't inline any functions from the template. GHC has a nasty habit+-- of deciding to inline happyGoto everywhere, which increases the size of+-- the generated parser quite a bit. {-# NOINLINE happyDoAction #-} {-# NOINLINE happyTable #-}
src/Language/Rzk/Syntax/Par.y view
@@ -1,4 +1,4 @@--- -*- haskell -*- File generated by the BNF Converter (bnfc 2.9.6).+-- -*- haskell -*- File generated by the BNF Converter (bnfc 2.9.6.2). -- Parser definition for use with Happy {@@ -24,18 +24,21 @@ , pListPattern1 , pParam , pListParam+ , pBind , pParamDecl , pSigmaParam , pListSigmaParam , pRestriction , pListRestriction+ , pModality+ , pModComp , pTerm7 , pTerm5 , pTerm4 , pTerm3 , pTerm2- , pTerm1 , pTerm6+ , pTerm1 , pTerm , pListTerm ) where@@ -44,6 +47,7 @@ import qualified Language.Rzk.Syntax.Abs import Language.Rzk.Syntax.Lex+import qualified Data.Text } @@ -63,18 +67,21 @@ %name pListPattern1_internal ListPattern1 %name pParam_internal Param %name pListParam_internal ListParam+%name pBind_internal Bind %name pParamDecl_internal ParamDecl %name pSigmaParam_internal SigmaParam %name pListSigmaParam_internal ListSigmaParam %name pRestriction_internal Restriction %name pListRestriction_internal ListRestriction+%name pModality_internal Modality+%name pModComp_internal ModComp %name pTerm7_internal Term7 %name pTerm5_internal Term5 %name pTerm4_internal Term4 %name pTerm3_internal Term3 %name pTerm2_internal Term2-%name pTerm1_internal Term1 %name pTerm6_internal Term6+%name pTerm1_internal Term1 %name pTerm_internal Term %name pListTerm_internal ListTerm -- no lexer declaration@@ -96,68 +103,90 @@ '#unset-option' { PT _ (TS _ 13) } '#variable' { PT _ (TS _ 14) } '#variables' { PT _ (TS _ 15) }- '(' { PT _ (TS _ 16) }- ')' { PT _ (TS _ 17) }- '*' { PT _ (TS _ 18) }- '*_1' { PT _ (TS _ 19) }- '*₁' { PT _ (TS _ 20) }- ',' { PT _ (TS _ 21) }- '->' { PT _ (TS _ 22) }- '/\\' { PT _ (TS _ 23) }- '0_2' { PT _ (TS _ 24) }- '0₂' { PT _ (TS _ 25) }- '1' { PT _ (TS _ 26) }- '1_2' { PT _ (TS _ 27) }- '1₂' { PT _ (TS _ 28) }- '2' { PT _ (TS _ 29) }- ':' { PT _ (TS _ 30) }- ':=' { PT _ (TS _ 31) }- ';' { PT _ (TS _ 32) }- '<' { PT _ (TS _ 33) }- '<=' { PT _ (TS _ 34) }- '=' { PT _ (TS _ 35) }- '===' { PT _ (TS _ 36) }- '=_{' { PT _ (TS _ 37) }- '>' { PT _ (TS _ 38) }- 'BOT' { PT _ (TS _ 39) }- 'CUBE' { PT _ (TS _ 40) }- 'Sigma' { PT _ (TS _ 41) }- 'TOP' { PT _ (TS _ 42) }- 'TOPE' { PT _ (TS _ 43) }- 'U' { PT _ (TS _ 44) }- 'Unit' { PT _ (TS _ 45) }- '[' { PT _ (TS _ 46) }- '\\' { PT _ (TS _ 47) }- '\\/' { PT _ (TS _ 48) }- ']' { PT _ (TS _ 49) }- 'as' { PT _ (TS _ 50) }- 'first' { PT _ (TS _ 51) }- 'idJ' { PT _ (TS _ 52) }- 'recBOT' { PT _ (TS _ 53) }- 'recOR' { PT _ (TS _ 54) }- 'refl' { PT _ (TS _ 55) }- 'refl_{' { PT _ (TS _ 56) }- 'rzk-1' { PT _ (TS _ 57) }- 'second' { PT _ (TS _ 58) }- 'unit' { PT _ (TS _ 59) }- 'uses' { PT _ (TS _ 60) }- '{' { PT _ (TS _ 61) }- '|' { PT _ (TS _ 62) }- '|->' { PT _ (TS _ 63) }- '}' { PT _ (TS _ 64) }- '×' { PT _ (TS _ 65) }- 'Σ' { PT _ (TS _ 66) }- 'π₁' { PT _ (TS _ 67) }- 'π₂' { PT _ (TS _ 68) }- '→' { PT _ (TS _ 69) }- '↦' { PT _ (TS _ 70) }- '∑' { PT _ (TS _ 71) }- '∧' { PT _ (TS _ 72) }- '∨' { PT _ (TS _ 73) }- '≡' { PT _ (TS _ 74) }- '≤' { PT _ (TS _ 75) }- '⊤' { PT _ (TS _ 76) }- '⊥' { PT _ (TS _ 77) }+ '$extract$' { PT _ (TS _ 16) }+ '(' { PT _ (TS _ 17) }+ ')' { PT _ (TS _ 18) }+ '*' { PT _ (TS _ 19) }+ '*_1' { PT _ (TS _ 20) }+ '*₁' { PT _ (TS _ 21) }+ ',' { PT _ (TS _ 22) }+ '->' { PT _ (TS _ 23) }+ '/' { PT _ (TS _ 24) }+ '/\\' { PT _ (TS _ 25) }+ '0_2' { PT _ (TS _ 26) }+ '0₂' { PT _ (TS _ 27) }+ '1' { PT _ (TS _ 28) }+ '1_2' { PT _ (TS _ 29) }+ '1₂' { PT _ (TS _ 30) }+ '2' { PT _ (TS _ 31) }+ ':' { PT _ (TS _ 32) }+ ':=' { PT _ (TS _ 33) }+ ';' { PT _ (TS _ 34) }+ '<' { PT _ (TS _ 35) }+ '<=' { PT _ (TS _ 36) }+ '<|' { PT _ (TS _ 37) }+ '=' { PT _ (TS _ 38) }+ '===' { PT _ (TS _ 39) }+ '=_{' { PT _ (TS _ 40) }+ '>' { PT _ (TS _ 41) }+ 'BOT' { PT _ (TS _ 42) }+ 'CUBE' { PT _ (TS _ 43) }+ 'Sigma' { PT _ (TS _ 44) }+ 'TOP' { PT _ (TS _ 45) }+ 'TOPE' { PT _ (TS _ 46) }+ 'U' { PT _ (TS _ 47) }+ 'Unit' { PT _ (TS _ 48) }+ '[' { PT _ (TS _ 49) }+ '\\' { PT _ (TS _ 50) }+ '\\/' { PT _ (TS _ 51) }+ ']' { PT _ (TS _ 52) }+ '_#' { PT _ (TS _ 53) }+ '_b' { PT _ (TS _ 54) }+ '_id' { PT _ (TS _ 55) }+ '_op' { PT _ (TS _ 56) }+ 'as' { PT _ (TS _ 57) }+ 'first' { PT _ (TS _ 58) }+ 'flip_op' { PT _ (TS _ 59) }+ 'flipᵒᵖ' { PT _ (TS _ 60) }+ 'idJ' { PT _ (TS _ 61) }+ 'in' { PT _ (TS _ 62) }+ 'inv_op' { PT _ (TS _ 63) }+ 'invᵒᵖ' { PT _ (TS _ 64) }+ 'let' { PT _ (TS _ 65) }+ 'mod' { PT _ (TS _ 66) }+ 'recBOT' { PT _ (TS _ 67) }+ 'recOR' { PT _ (TS _ 68) }+ 'refl' { PT _ (TS _ 69) }+ 'refl_{' { PT _ (TS _ 70) }+ 'rzk-1' { PT _ (TS _ 71) }+ 'second' { PT _ (TS _ 72) }+ 'unflip_op' { PT _ (TS _ 73) }+ 'unflipᵒᵖ' { PT _ (TS _ 74) }+ 'uninv_op' { PT _ (TS _ 75) }+ 'uninvᵒᵖ' { PT _ (TS _ 76) }+ 'unit' { PT _ (TS _ 77) }+ 'uses' { PT _ (TS _ 78) }+ '{' { PT _ (TS _ 79) }+ '|' { PT _ (TS _ 80) }+ '|->' { PT _ (TS _ 81) }+ '|>' { PT _ (TS _ 82) }+ '}' { PT _ (TS _ 83) }+ '×' { PT _ (TS _ 84) }+ 'Σ' { PT _ (TS _ 85) }+ 'π₁' { PT _ (TS _ 86) }+ 'π₂' { PT _ (TS _ 87) }+ 'ᵒᵖ' { PT _ (TS _ 88) }+ '→' { PT _ (TS _ 89) }+ '↦' { PT _ (TS _ 90) }+ '∑' { PT _ (TS _ 91) }+ '∧' { PT _ (TS _ 92) }+ '∨' { PT _ (TS _ 93) }+ '≡' { PT _ (TS _ 94) }+ '≤' { PT _ (TS _ 95) }+ '⊤' { PT _ (TS _ 96) }+ '⊥' { PT _ (TS _ 97) }+ '♭' { PT _ (TS _ 98) }+ '♯' { PT _ (TS _ 99) } L_quoted { PT _ (TL _) } L_VarIdentToken { PT _ (T_VarIdentToken _) } L_HoleIdentToken { PT _ (T_HoleIdentToken _) }@@ -165,7 +194,7 @@ %% String :: { (Language.Rzk.Syntax.Abs.BNFC'Position, String) }-String : L_quoted { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), ((\(PT _ (TL s)) -> s) $1)) }+String : L_quoted { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) $1))) } VarIdentToken :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken) } VarIdentToken : L_VarIdentToken { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText $1)) }@@ -259,12 +288,18 @@ | '(' ListPattern ':' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } | '(' ListPattern ':' Term '|' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) } | '{' Pattern ':' Term '|' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamPatternShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }+ | '(' ListPattern ':' Modality Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $5)) } ListParam :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]) } ListParam : Param { (fst $1, (:[]) (snd $1)) } | Param ListParam { (fst $1, (:) (snd $1) (snd $2)) } +Bind :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind) }+Bind+ : Pattern { (fst $1, Language.Rzk.Syntax.Abs.BindPattern (fst $1) (snd $1)) }+ | Pattern ':' Term { (fst $1, Language.Rzk.Syntax.Abs.BindPatternType (fst $1) (snd $1) (snd $3)) }+ ParamDecl :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl) } ParamDecl : Term6 { (fst $1, Language.Rzk.Syntax.Abs.ParamType (fst $1) (snd $1)) }@@ -273,10 +308,12 @@ | '{' Pattern ':' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamTermTypeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } | '{' '(' Pattern ':' Term ')' '|' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) } | '{' Pattern ':' Term '|' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.paramVarShapeDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }+ | '(' Term ':' Modality Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $5)) } SigmaParam :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam) } SigmaParam : Pattern ':' Term { (fst $1, Language.Rzk.Syntax.Abs.SigmaParam (fst $1) (snd $1) (snd $3)) }+ | Pattern ':' Modality Term { (fst $1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst $1) (snd $1) (snd $3) (snd $4)) } ListSigmaParam :: { (Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]) } ListSigmaParam@@ -293,6 +330,21 @@ : Restriction { (fst $1, (:[]) (snd $1)) } | Restriction ',' ListRestriction { (fst $1, (:) (snd $1) (snd $3)) } +Modality :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality) }+Modality+ : '♭' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }+ | '_b' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }+ | '♯' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }+ | '_#' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }+ | 'ᵒᵖ' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }+ | '_op' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }+ | '_id' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }++ModComp :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp) }+ModComp+ : Modality { (fst $1, Language.Rzk.Syntax.Abs.Single (fst $1) (snd $1)) }+ | Modality '/' Modality { (fst $1, Language.Rzk.Syntax.Abs.Comp (fst $1) (snd $1) (snd $3)) }+ Term7 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) } Term7 : 'U' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) }@@ -312,6 +364,8 @@ | '<' ParamDecl '→' Term '>' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeExtensionDeprecated (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } | '(' Term ',' Term ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } | '(' Term ',' Term ',' ListTerm ')' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) }+ | 'mod' Modality Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3)) }+ | '<|' Modality '|' Term '|>' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ModType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } | 'unit' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) } | 'refl' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1))) } | 'refl_{' Term '}' { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }@@ -353,32 +407,45 @@ | Term3 { (fst $1, (snd $1)) } | Term3 '\\/' Term2 { (fst $1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst $1) (snd $1) (snd $3)) } +Term6 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }+Term6+ : 'invᵒᵖ' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'inv_op' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'uninvᵒᵖ' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'uninv_op' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'flipᵒᵖ' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'flip_op' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'unflipᵒᵖ' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'unflip_op' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | Term6 '[' ListRestriction ']' { (fst $1, Language.Rzk.Syntax.Abs.TypeRestricted (fst $1) (snd $1) (snd $3)) }+ | Term6 Term7 { (fst $1, Language.Rzk.Syntax.Abs.App (fst $1) (snd $1) (snd $2)) }+ | '$extract$' ModComp Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $3)) }+ | 'π₁' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'π₂' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | Term7 { (fst $1, (snd $1)) }+ | 'first' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ | 'second' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }+ Term1 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) } Term1 : ParamDecl '→' Term1 { (fst $1, Language.Rzk.Syntax.Abs.TypeFun (fst $1) (snd $1) (snd $3)) } | 'Σ' '(' Pattern ':' Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }+ | 'Σ' '(' Pattern ':' Modality Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $6) (snd $9)) } | 'Σ' '(' SigmaParam ',' ListSigmaParam ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) } | Term2 '=_{' Term '}' Term2 { (fst $1, Language.Rzk.Syntax.Abs.TypeId (fst $1) (snd $1) (snd $3) (snd $5)) } | Term2 '=' Term2 { (fst $1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst $1) (snd $1) (snd $3)) }+ | 'let' Bind ':=' Term 'in' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4) (snd $6)) } | '\\' ListParam '→' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) }+ | 'let' 'mod' ModComp Bind ':=' Term 'in' Term { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $4) (snd $6) (snd $8)) } | Term2 { (fst $1, (snd $1)) } | ParamDecl '->' Term1 { (fst $1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst $1) (snd $1) (snd $3)) } | 'Sigma' '(' Pattern ':' Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) }+ | 'Sigma' '(' Pattern ':' Modality Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $6) (snd $9)) } | 'Sigma' '(' SigmaParam ',' ListSigmaParam ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) } | '\\' ListParam '->' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2) (snd $4)) } | '∑' '(' Pattern ':' Term ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) } | '∑' '(' SigmaParam ',' ListSigmaParam ')' ',' Term1 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $3) (snd $5) (snd $8)) } -Term6 :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) }-Term6- : Term6 '[' ListRestriction ']' { (fst $1, Language.Rzk.Syntax.Abs.TypeRestricted (fst $1) (snd $1) (snd $3)) }- | Term6 Term7 { (fst $1, Language.Rzk.Syntax.Abs.App (fst $1) (snd $1) (snd $2)) }- | 'π₁' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }- | 'π₂' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }- | Term7 { (fst $1, (snd $1)) }- | 'first' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }- | 'second' Term7 { (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol $1)) (snd $2)) }- Term :: { (Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term) } Term : Term2 'as' Term1 { (fst $1, Language.Rzk.Syntax.Abs.TypeAsc (fst $1) (snd $1) (snd $3)) }@@ -401,7 +468,7 @@ [Err _] -> " due to lexer error" t:_ -> " before `" ++ (prToken t) ++ "'" -myLexer :: String -> [Token]+myLexer :: Data.Text.Text -> [Token] myLexer = tokens -- Entrypoints@@ -454,6 +521,9 @@ pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param] pListParam = fmap snd . pListParam_internal +pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind+pBind = fmap snd . pBind_internal+ pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl pParamDecl = fmap snd . pParamDecl_internal @@ -469,6 +539,12 @@ pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction] pListRestriction = fmap snd . pListRestriction_internal +pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality+pModality = fmap snd . pModality_internal++pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp+pModComp = fmap snd . pModComp_internal+ pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term pTerm7 = fmap snd . pTerm7_internal @@ -484,11 +560,11 @@ pTerm2 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term pTerm2 = fmap snd . pTerm2_internal -pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm1 = fmap snd . pTerm1_internal- pTerm6 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term pTerm6 = fmap snd . pTerm6_internal++pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm1 = fmap snd . pTerm1_internal pTerm :: [Token] -> Err Language.Rzk.Syntax.Abs.Term pTerm = fmap snd . pTerm_internal
src/Language/Rzk/Syntax/Print.hs view
@@ -1,4 +1,4 @@--- File generated by the BNF Converter (bnfc 2.9.6).+-- File generated by the BNF Converter (bnfc 2.9.6.2). {-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleInstances #-}@@ -18,6 +18,7 @@ ) import Data.Char ( Char, isSpace ) import qualified Language.Rzk.Syntax.Abs+import qualified Data.Text -- | The top-level printing method. @@ -135,9 +136,9 @@ prt _ x = doc (shows x) instance Print Language.Rzk.Syntax.Abs.VarIdentToken where- prt _ (Language.Rzk.Syntax.Abs.VarIdentToken i) = doc $ showString i+ prt _ (Language.Rzk.Syntax.Abs.VarIdentToken i) = doc $ showString (Data.Text.unpack i) instance Print Language.Rzk.Syntax.Abs.HoleIdentToken where- prt _ (Language.Rzk.Syntax.Abs.HoleIdentToken i) = doc $ showString i+ prt _ (Language.Rzk.Syntax.Abs.HoleIdentToken i) = doc $ showString (Data.Text.unpack i) instance Print (Language.Rzk.Syntax.Abs.Module' a) where prt i = \case Language.Rzk.Syntax.Abs.Module _ languagedecl commands -> prPrec i 0 (concatD [prt 0 languagedecl, prt 0 commands])@@ -210,12 +211,18 @@ Language.Rzk.Syntax.Abs.ParamPatternType _ patterns term -> prPrec i 0 (concatD [doc (showString "("), prt 0 patterns, doc (showString ":"), prt 0 term, doc (showString ")")]) Language.Rzk.Syntax.Abs.ParamPatternShape _ patterns term1 term2 -> prPrec i 0 (concatD [doc (showString "("), prt 0 patterns, doc (showString ":"), prt 0 term1, doc (showString "|"), prt 0 term2, doc (showString ")")]) Language.Rzk.Syntax.Abs.ParamPatternShapeDeprecated _ pattern_ term1 term2 -> prPrec i 0 (concatD [doc (showString "{"), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString "|"), prt 0 term2, doc (showString "}")])+ Language.Rzk.Syntax.Abs.ParamPatternModalType _ patterns modality term -> prPrec i 0 (concatD [doc (showString "("), prt 0 patterns, doc (showString ":"), prt 0 modality, prt 0 term, doc (showString ")")]) instance Print [Language.Rzk.Syntax.Abs.Param' a] where prt _ [] = concatD [] prt _ [x] = concatD [prt 0 x] prt _ (x:xs) = concatD [prt 0 x, prt 0 xs] +instance Print (Language.Rzk.Syntax.Abs.Bind' a) where+ prt i = \case+ Language.Rzk.Syntax.Abs.BindPattern _ pattern_ -> prPrec i 0 (concatD [prt 0 pattern_])+ Language.Rzk.Syntax.Abs.BindPatternType _ pattern_ term -> prPrec i 0 (concatD [prt 0 pattern_, doc (showString ":"), prt 0 term])+ instance Print (Language.Rzk.Syntax.Abs.ParamDecl' a) where prt i = \case Language.Rzk.Syntax.Abs.ParamType _ term -> prPrec i 0 (concatD [prt 6 term])@@ -223,10 +230,12 @@ Language.Rzk.Syntax.Abs.ParamTermShape _ term1 term2 term3 -> prPrec i 0 (concatD [doc (showString "("), prt 0 term1, doc (showString ":"), prt 0 term2, doc (showString "|"), prt 0 term3, doc (showString ")")]) Language.Rzk.Syntax.Abs.ParamTermTypeDeprecated _ pattern_ term -> prPrec i 0 (concatD [doc (showString "{"), prt 0 pattern_, doc (showString ":"), prt 0 term, doc (showString "}")]) Language.Rzk.Syntax.Abs.ParamVarShapeDeprecated _ pattern_ term1 term2 -> prPrec i 0 (concatD [doc (showString "{"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString "|"), prt 0 term2, doc (showString "}")])+ Language.Rzk.Syntax.Abs.ParamTermModalType _ term1 modality term2 -> prPrec i 0 (concatD [doc (showString "("), prt 0 term1, doc (showString ":"), prt 0 modality, prt 0 term2, doc (showString ")")]) instance Print (Language.Rzk.Syntax.Abs.SigmaParam' a) where prt i = \case Language.Rzk.Syntax.Abs.SigmaParam _ pattern_ term -> prPrec i 0 (concatD [prt 0 pattern_, doc (showString ":"), prt 0 term])+ Language.Rzk.Syntax.Abs.SigmaParamModal _ pattern_ modality term -> prPrec i 0 (concatD [prt 0 pattern_, doc (showString ":"), prt 0 modality, prt 0 term]) instance Print [Language.Rzk.Syntax.Abs.SigmaParam' a] where prt _ [] = concatD []@@ -243,6 +252,21 @@ prt _ [x] = concatD [prt 0 x] prt _ (x:xs) = concatD [prt 0 x, doc (showString ","), prt 0 xs] +instance Print (Language.Rzk.Syntax.Abs.Modality' a) where+ prt i = \case+ Language.Rzk.Syntax.Abs.Flat _ -> prPrec i 0 (concatD [doc (showString "\9837")])+ Language.Rzk.Syntax.Abs.ASCII_Flat _ -> prPrec i 0 (concatD [doc (showString "_b")])+ Language.Rzk.Syntax.Abs.Sharp _ -> prPrec i 0 (concatD [doc (showString "\9839")])+ Language.Rzk.Syntax.Abs.ASCII_Sharp _ -> prPrec i 0 (concatD [doc (showString "_#")])+ Language.Rzk.Syntax.Abs.Op _ -> prPrec i 0 (concatD [doc (showString "\7506\7510")])+ Language.Rzk.Syntax.Abs.ASCII_Op _ -> prPrec i 0 (concatD [doc (showString "_op")])+ Language.Rzk.Syntax.Abs.Id _ -> prPrec i 0 (concatD [doc (showString "_id")])++instance Print (Language.Rzk.Syntax.Abs.ModComp' a) where+ prt i = \case+ Language.Rzk.Syntax.Abs.Single _ modality -> prPrec i 0 (concatD [prt 0 modality])+ Language.Rzk.Syntax.Abs.Comp _ modality1 modality2 -> prPrec i 0 (concatD [prt 0 modality1, doc (showString "/"), prt 0 modality2])+ instance Print (Language.Rzk.Syntax.Abs.Term' a) where prt i = \case Language.Rzk.Syntax.Abs.Universe _ -> prPrec i 7 (concatD [doc (showString "U")])@@ -260,21 +284,31 @@ Language.Rzk.Syntax.Abs.TopeLEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "\8804"), prt 5 term2]) Language.Rzk.Syntax.Abs.TopeAnd _ term1 term2 -> prPrec i 3 (concatD [prt 4 term1, doc (showString "\8743"), prt 3 term2]) Language.Rzk.Syntax.Abs.TopeOr _ term1 term2 -> prPrec i 2 (concatD [prt 3 term1, doc (showString "\8744"), prt 2 term2])+ Language.Rzk.Syntax.Abs.TopeInv _ term -> prPrec i 6 (concatD [doc (showString "inv\7506\7510"), prt 7 term])+ Language.Rzk.Syntax.Abs.TopeUninv _ term -> prPrec i 6 (concatD [doc (showString "uninv\7506\7510"), prt 7 term])+ Language.Rzk.Syntax.Abs.CubeFlip _ term -> prPrec i 6 (concatD [doc (showString "flip\7506\7510"), prt 7 term])+ Language.Rzk.Syntax.Abs.CubeUnflip _ term -> prPrec i 6 (concatD [doc (showString "unflip\7506\7510"), prt 7 term]) Language.Rzk.Syntax.Abs.RecBottom _ -> prPrec i 7 (concatD [doc (showString "recBOT")]) Language.Rzk.Syntax.Abs.RecOr _ restrictions -> prPrec i 7 (concatD [doc (showString "recOR"), doc (showString "("), prt 0 restrictions, doc (showString ")")]) Language.Rzk.Syntax.Abs.RecOrDeprecated _ term1 term2 term3 term4 -> prPrec i 7 (concatD [doc (showString "recOR"), doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 term3, doc (showString ","), prt 0 term4, doc (showString ")")]) Language.Rzk.Syntax.Abs.TypeFun _ paramdecl term -> prPrec i 1 (concatD [prt 0 paramdecl, doc (showString "\8594"), prt 1 term]) Language.Rzk.Syntax.Abs.TypeSigma _ pattern_ term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])+ Language.Rzk.Syntax.Abs.TypeSigmaModal _ pattern_ modality term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 modality, prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2]) Language.Rzk.Syntax.Abs.TypeSigmaTuple _ sigmaparam sigmaparams term -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 sigmaparam, doc (showString ","), prt 0 sigmaparams, doc (showString ")"), doc (showString ","), prt 1 term]) Language.Rzk.Syntax.Abs.TypeUnit _ -> prPrec i 7 (concatD [doc (showString "Unit")]) Language.Rzk.Syntax.Abs.TypeId _ term1 term2 term3 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "=_{"), prt 0 term2, doc (showString "}"), prt 2 term3]) Language.Rzk.Syntax.Abs.TypeIdSimple _ term1 term2 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "="), prt 2 term2]) Language.Rzk.Syntax.Abs.TypeRestricted _ term restrictions -> prPrec i 6 (concatD [prt 6 term, doc (showString "["), prt 0 restrictions, doc (showString "]")]) Language.Rzk.Syntax.Abs.TypeExtensionDeprecated _ paramdecl term -> prPrec i 7 (concatD [doc (showString "<"), prt 0 paramdecl, doc (showString "\8594"), prt 0 term, doc (showString ">")])+ Language.Rzk.Syntax.Abs.Let _ bind term1 term2 -> prPrec i 1 (concatD [doc (showString "let"), prt 0 bind, doc (showString ":="), prt 0 term1, doc (showString "in"), prt 0 term2]) Language.Rzk.Syntax.Abs.App _ term1 term2 -> prPrec i 6 (concatD [prt 6 term1, prt 7 term2]) Language.Rzk.Syntax.Abs.Lambda _ params term -> prPrec i 1 (concatD [doc (showString "\\"), prt 0 params, doc (showString "\8594"), prt 1 term]) Language.Rzk.Syntax.Abs.Pair _ term1 term2 -> prPrec i 7 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ")")]) Language.Rzk.Syntax.Abs.Tuple _ term1 term2 terms -> prPrec i 7 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 terms, doc (showString ")")])+ Language.Rzk.Syntax.Abs.ModApp _ modality term -> prPrec i 7 (concatD [doc (showString "mod"), prt 0 modality, prt 7 term])+ Language.Rzk.Syntax.Abs.ModType _ modality term -> prPrec i 7 (concatD [doc (showString "<|"), prt 0 modality, doc (showString "|"), prt 0 term, doc (showString "|>")])+ Language.Rzk.Syntax.Abs.ModExtract _ modcomp term -> prPrec i 6 (concatD [doc (showString "$extract$"), prt 0 modcomp, prt 7 term])+ Language.Rzk.Syntax.Abs.LetMod _ modcomp bind term1 term2 -> prPrec i 1 (concatD [doc (showString "let"), doc (showString "mod"), prt 0 modcomp, prt 0 bind, doc (showString ":="), prt 0 term1, doc (showString "in"), prt 0 term2]) Language.Rzk.Syntax.Abs.First _ term -> prPrec i 6 (concatD [doc (showString "\960\8321"), prt 7 term]) Language.Rzk.Syntax.Abs.Second _ term -> prPrec i 6 (concatD [doc (showString "\960\8322"), prt 7 term]) Language.Rzk.Syntax.Abs.Unit _ -> prPrec i 7 (concatD [doc (showString "unit")])@@ -296,6 +330,7 @@ Language.Rzk.Syntax.Abs.ASCII_TopeOr _ term1 term2 -> prPrec i 2 (concatD [prt 3 term1, doc (showString "\\/"), prt 2 term2]) Language.Rzk.Syntax.Abs.ASCII_TypeFun _ paramdecl term -> prPrec i 1 (concatD [prt 0 paramdecl, doc (showString "->"), prt 1 term]) Language.Rzk.Syntax.Abs.ASCII_TypeSigma _ pattern_ term1 term2 -> prPrec i 1 (concatD [doc (showString "Sigma"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])+ Language.Rzk.Syntax.Abs.ASCII_TypeSigmaModal _ pattern_ modality term1 term2 -> prPrec i 1 (concatD [doc (showString "Sigma"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 modality, prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2]) Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple _ sigmaparam sigmaparams term -> prPrec i 1 (concatD [doc (showString "Sigma"), doc (showString "("), prt 0 sigmaparam, doc (showString ","), prt 0 sigmaparams, doc (showString ")"), doc (showString ","), prt 1 term]) Language.Rzk.Syntax.Abs.ASCII_Lambda _ params term -> prPrec i 1 (concatD [doc (showString "\\"), prt 0 params, doc (showString "->"), prt 1 term]) Language.Rzk.Syntax.Abs.ASCII_TypeExtensionDeprecated _ paramdecl term -> prPrec i 7 (concatD [doc (showString "<"), prt 0 paramdecl, doc (showString "->"), prt 0 term, doc (showString ">")])
src/Language/Rzk/VSCode/Handlers.hs view
@@ -53,15 +53,14 @@ import Language.Rzk.VSCode.Env import Language.Rzk.VSCode.Logging import Language.Rzk.VSCode.Tokenize (tokenizeModule)-import Rzk.Format (FormattingEdit (..),- formatTextEdits)+import Rzk.Format (format) import Rzk.Project.Config (ProjectConfig (include)) import Rzk.TypeCheck import Text.Read (readMaybe) -- | Given a list of file paths, reads them and parses them as Rzk modules, -- returning the same list of file paths but with the parsed module (or parse error)-parseFiles :: [FilePath] -> IO [(FilePath, Either String Module)]+parseFiles :: [FilePath] -> IO [(FilePath, Either T.Text Module)] parseFiles [] = pure [] parseFiles (x:xs) = do errOrMod <- parseModuleFile x@@ -71,7 +70,7 @@ -- | Given the list of possible modules returned by `parseFiles`, this segregates the errors -- from the successfully parsed modules and returns them in separate lists so the errors -- can be reported and the modules can be typechecked.-collectErrors :: [(FilePath, Either String Module)] -> ([(FilePath, String)], [(FilePath, Module)])+collectErrors :: [(FilePath, Either T.Text Module)] -> ([(FilePath, T.Text)], [(FilePath, Module)]) collectErrors [] = ([], []) collectErrors ((path, result) : paths) = case result of@@ -87,6 +86,8 @@ filePathToNormalizedUri :: FilePath -> NormalizedUri filePathToNormalizedUri = toNormalizedUri . filePathToUri +tshow :: Show a => a -> T.Text+tshow = T.pack . show typecheckFromConfigFile :: LSP () typecheckFromConfigFile = do@@ -101,7 +102,7 @@ eitherConfig <- liftIO $ Yaml.decodeFileEither @ProjectConfig rzkYamlPath case eitherConfig of Left err -> do- logError ("Invalid or missing rzk.yaml: " ++ Yaml.prettyPrintParseException err)+ logError ("Invalid or missing rzk.yaml: " <> T.pack (Yaml.prettyPrintParseException err)) Right config -> do logDebug "Starting typechecking"@@ -113,8 +114,8 @@ let cachedPaths = map fst cachedModules modifiedFiles = paths \\ cachedPaths - logDebug ("Found " ++ show (length cachedPaths) ++ " files in the cache")- logDebug (show (length modifiedFiles) ++ " files have been modified")+ logDebug ("Found " <> tshow (length cachedPaths) <> " files in the cache")+ logDebug (tshow (length modifiedFiles) <> " files have been modified") (parseErrors, parsedModules) <- liftIO $ collectErrors <$> parseFiles modifiedFiles tcResults <- liftIO $ try $ evaluate $@@ -124,15 +125,15 @@ Left (ex :: SomeException) -> do -- Just a warning to be logged in the "Output" panel and not shown to the user as an error message -- because exceptions are expected when the file has invalid syntax- logWarning ("Encountered an exception while typechecking:\n" ++ show ex)+ logWarning ("Encountered an exception while typechecking:\n" <> tshow ex) return ([], []) Right (Left err) -> do- logError ("An impossible error happened! Please report a bug:\n" ++ ppTypeErrorInScopedContext' BottomUp err)+ logError ("An impossible error happened! Please report a bug:\n" <> T.pack (ppTypeErrorInScopedContext' BottomUp err)) return ([err], []) -- sort of impossible Right (Right (checkedModules, errors)) -> do -- cache well-typed modules- logInfo (show (length checkedModules) ++ " modules successfully typechecked")- logInfo (show (length errors) ++ " errors found")+ logInfo (tshow (length checkedModules) <> " modules successfully typechecked")+ logInfo (tshow (length errors) <> " errors found") let checkedModules' = map (\(path, decls) -> (path, RzkCachedModule decls (filter ((== path) . filepathOfTypeError) errors))) checkedModules cacheTypecheckedModules checkedModules' return (errors, checkedModules)@@ -167,7 +168,7 @@ (Range (Position line 0) (Position line 99)) -- 99 to reach end of line and be visible until we actually have information about it (Just DiagnosticSeverity_Error) (Just $ InR "type-error") -- diagnostic code- Nothing -- diagonstic description+ Nothing -- diagnostic description (Just "rzk") -- A human-readable string describing the source of this diagnostic (T.pack msg) Nothing -- tags@@ -185,19 +186,20 @@ line = fromIntegral $ fromMaybe 0 $ extractLineNumber err - diagnosticOfParseError :: String -> Diagnostic+ diagnosticOfParseError :: T.Text -> Diagnostic diagnosticOfParseError err = Diagnostic (Range (Position errLine errColumnStart) (Position errLine errColumnEnd)) (Just DiagnosticSeverity_Error) (Just $ InR "parse-error") Nothing (Just "rzk")- (T.pack err)+ err Nothing (Just []) Nothing where+ errStr = T.unpack err (errLine, errColumnStart, errColumnEnd) = fromMaybe (0, 0, 0) $- case words err of+ case words errStr of -- Happy parse error (take 9 -> ["syntax", "error", "at", "line", lineStr, "column", columnStr, "before", token]) -> do line <- readMaybe (takeWhile isDigit lineStr)@@ -228,7 +230,7 @@ when (isNothing root) $ logDebug "Not in a workspace. Cannot find root path for relative paths" let rootDir = fromMaybe "/" root cachedModules <- getCachedTypecheckedModules- logDebug ("Found " ++ show (length cachedModules) ++ " modules in the cache")+ logDebug ("Found " <> tshow (length cachedModules) <> " modules in the cache") let currentFile = fromMaybe "" $ uriToFilePath $ req ^. params . textDocument . uri -- Take all the modules up to and including the currently open one let modules = map ignoreErrors $ takeWhileInc ((/= currentFile) . fst) cachedModules@@ -240,13 +242,14 @@ | otherwise = [x] let items = concatMap (declsToItems rootDir) modules- logDebug ("Sending " ++ show (length items) ++ " completion items")+ logDebug ("Sending " <> T.pack (show (length items)) <> " completion items") res $ Right $ InL items where declsToItems :: FilePath -> (FilePath, [Decl']) -> [CompletionItem] declsToItems root (path, decls) = map (declToItem root path) decls declToItem :: FilePath -> FilePath -> Decl' -> CompletionItem declToItem rootDir path (Decl name type' _ _ _ _loc) = def+ & label .~ T.pack (printTree $ getVarIdent name) & detail ?~ T.pack (show type') & documentation ?~ InR (MarkupContent MarkupKind_Markdown $ T.pack $@@ -259,27 +262,52 @@ line = maybe 0 fst pos' _col = maybe 0 snd pos' -formattingEditToTextEdit :: FormattingEdit -> TextEdit-formattingEditToTextEdit (FormattingEdit startLine startCol endLine endCol newText) =- TextEdit- (Range- (Position (fromIntegral startLine - 1) (fromIntegral startCol - 1))- (Position (fromIntegral endLine - 1) (fromIntegral endCol - 1))- )- (T.pack newText)+-- | Full-document range for LSP (0-based line and character).+-- End position is exclusive. Computed from the actual text so that every+-- character (including trailing newlines) is included; using T.lines would+-- drop trailing newlines and leave them in place after the edit (extra blank line).+fullDocumentRange :: T.Text -> Range+fullDocumentRange source+ | T.null source = Range (Position 0 0) (Position 0 0)+ | otherwise =+ let newlineCount = T.count (T.singleton '\n') source+ endLine = newlineCount+ -- Length of last line (after last newline); if no newline, whole text is one line+ endCharacter+ | T.last source == '\n' = 0+ | Just i <- T.findIndex (== '\n') (T.reverse source) = fromIntegral i+ | otherwise = fromIntegral (T.length source)+ in Range (Position 0 0) (Position (fromIntegral endLine) endCharacter) formatDocument :: Handler LSP 'Method_TextDocumentFormatting formatDocument req res = do let doc = req ^. params . textDocument . uri . to toNormalizedUri- logInfo $ "Formatting document: " <> show doc+ logInfo $ "Formatting document: " <> T.pack (show doc) ServerConfig {formatEnabled = fmtEnabled} <- getConfig if fmtEnabled then do mdoc <- getVirtualFile doc possibleEdits <- case virtualFileText <$> mdoc of Nothing -> return (Left "Failed to get file contents") Just sourceCode -> do- let edits = formatTextEdits (filter (/= '\r') $ T.unpack sourceCode)- return (Right $ map formattingEditToTextEdit edits)+ let source = T.filter (/= '\r') sourceCode+ formatted = format source+ -- Preserve trailing newlines of the source so formatting is idempotent.+ formatted'+ | T.null source = formatted+ | otherwise =+ let inputTrailing = T.length (T.takeWhileEnd (== '\n') source)+ outTrailing = T.length (T.takeWhileEnd (== '\n') formatted)+ in if outTrailing > inputTrailing+ then T.dropEnd (outTrailing - inputTrailing) formatted+ else if outTrailing < inputTrailing+ then formatted <> T.replicate (inputTrailing - outTrailing) (T.singleton '\n')+ else formatted+ -- Never send trailing newlines: some clients add one when applying a+ -- full-document edit, so we send content ending with no newline to avoid+ -- an extra blank line on each format.+ formatted'' = T.dropWhileEnd (== '\n') formatted'+ range = fullDocumentRange source+ return (Right [TextEdit range formatted'']) case possibleEdits of #if MIN_VERSION_lsp(2,7,0) Left err -> res $ Left $ TResponseError (InR ErrorCodes_InternalError) err Nothing@@ -299,11 +327,11 @@ possibleTokens <- case virtualFileText <$> mdoc of Nothing -> return (Left "Failed to get file content") Just sourceCode -> fmap (fmap tokenizeModule) $ liftIO $- parseModuleSafe (filter (/= '\r') $ T.unpack sourceCode)+ parseModuleSafe (T.filter (/= '\r') sourceCode) case possibleTokens of Left err -> do -- Exception occurred when parsing the module- logWarning ("Failed to tokenize file: " ++ err)+ logWarning ("Failed to tokenize file: " <> err) Right tokens -> do let encoded = encodeTokens defaultSemanticTokensLegend $ relativizeTokens tokens case encoded of
src/Language/Rzk/VSCode/Logging.hs view
@@ -6,15 +6,15 @@ import Language.LSP.Server (MonadLsp) -logDebug :: MonadLsp c m => String -> m ()-logDebug msg = defaultClientLogger <& T.pack msg `WithSeverity` Debug+logDebug :: MonadLsp c m => T.Text -> m ()+logDebug msg = defaultClientLogger <& msg `WithSeverity` Debug -logInfo :: MonadLsp c m => String -> m ()-logInfo msg = defaultClientLogger <& T.pack msg `WithSeverity` Info+logInfo :: MonadLsp c m => T.Text -> m ()+logInfo msg = defaultClientLogger <& msg `WithSeverity` Info -logWarning :: MonadLsp c m => String -> m ()-logWarning msg = defaultClientLogger <& T.pack msg `WithSeverity` Warning+logWarning :: MonadLsp c m => T.Text -> m ()+logWarning msg = defaultClientLogger <& msg `WithSeverity` Warning -- | Error logs will also be shown to the user via `window/showMessage`-logError :: MonadLsp c m => String -> m ()-logError msg = defaultClientLogger <& T.pack msg `WithSeverity` Error+logError :: MonadLsp c m => T.Text -> m ()+logError msg = defaultClientLogger <& msg `WithSeverity` Error
src/Language/Rzk/VSCode/Tokenize.hs view
@@ -43,6 +43,11 @@ CommandSection _loc _nameStart -> [] CommandSectionEnd _loc _nameEnd -> [] +tokenizeBind :: Bind -> [SemanticTokenAbsolute]+tokenizeBind = \case+ BindPattern _loc pat -> tokenizePattern pat+ BindPatternType _loc pat type_ -> concat [tokenizePattern pat, tokenizeTerm type_]+ tokenizeParam :: Param -> [SemanticTokenAbsolute] tokenizeParam = \case ParamPattern _loc pat -> tokenizePattern pat@@ -57,6 +62,10 @@ [ tokenizePattern pat , tokenizeTerm cube , tokenizeTope tope ]+ ParamPatternModalType _loc pats md ty -> concat+ [ foldMap tokenizePattern pats+ , tokenizeModality md+ , tokenizeTerm ty ] tokenizePattern :: Pattern -> [SemanticTokenAbsolute] tokenizePattern = \case@@ -108,6 +117,10 @@ ASCII_TopeEQ _loc l r -> foldMap tokenizeTope [l, r] TopeLEQ _loc l r -> foldMap tokenizeTope [l, r] ASCII_TopeLEQ _loc l r -> foldMap tokenizeTope [l, r]+ TopeInv _loc t -> foldMap tokenizeTope [t]+ TopeUninv _loc t -> foldMap tokenizeTope [t]+ CubeFlip _loc c -> foldMap go [c]+ CubeUnflip _loc c -> foldMap go [c] RecBottom{} -> mkToken term SemanticTokenTypes_Function [SemanticTokenModifiers_DefaultLibrary] RecOr _loc rs -> foldMap tokenizeRestriction rs@@ -122,22 +135,30 @@ [ mkToken (VarIdent loc "∑") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary] , tokenizePattern pat , foldMap go [a, b] ]+ TypeSigmaModal loc pat md a b -> concat+ [ mkToken (VarIdent loc "∑") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary]+ , tokenizePattern pat+ , tokenizeModality md+ , foldMap go [a, b] ] ASCII_TypeSigma loc pat a b -> concat [ mkToken (VarIdent loc "Sigma") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary] , tokenizePattern pat , foldMap go [a, b] ]- TypeSigmaTuple loc p ps tN -> concat + ASCII_TypeSigmaModal loc pat md a b -> concat+ [ mkToken (VarIdent loc "Sigma") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary]+ , tokenizePattern pat+ , tokenizeModality md+ , foldMap go [a, b] ]+ TypeSigmaTuple loc p ps tN -> concat [ mkToken (VarIdent loc "∑") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary] , foldMap tokenizeSigmaParam (p : ps) , go tN ]- ASCII_TypeSigmaTuple loc p ps tN -> concat + ASCII_TypeSigmaTuple loc p ps tN -> concat [ mkToken (VarIdent loc "Sigma") SemanticTokenTypes_Class [SemanticTokenModifiers_DefaultLibrary] , foldMap tokenizeSigmaParam (p : ps) , go tN ] TypeId _loc x a y -> foldMap go [x, a, y] TypeIdSimple _loc x y -> foldMap go [x, y]- - TypeRestricted _loc type_ rs -> concat [ go type_ , foldMap tokenizeRestriction rs ]@@ -146,6 +167,8 @@ Lambda _loc params body -> concat [ foldMap tokenizeParam params , go body ]+ Let _loc bind val expr -> concat [tokenizeBind bind, go val, go expr]+ LetMod _loc comp bind val expr -> concat [tokenizeModComp comp, tokenizeBind bind, go val, go expr] ASCII_Lambda loc params body -> go (Lambda loc params body) Pair _loc l r -> foldMap go [l, r]@@ -180,10 +203,15 @@ TypeAsc _loc t type_ -> foldMap go [t, type_] + ModType _loc md type_ -> concat [tokenizeModality md, go type_]+ ModApp _loc md te -> concat [tokenizeModality md, go te]+ ModExtract _loc comp te -> concat [tokenizeModComp comp, go te]+ RecOrDeprecated{} -> mkToken term SemanticTokenTypes_Regexp [SemanticTokenModifiers_Deprecated] TypeExtensionDeprecated{} -> mkToken term SemanticTokenTypes_Regexp [SemanticTokenModifiers_Deprecated] ASCII_TypeExtensionDeprecated{} -> mkToken term SemanticTokenTypes_Regexp [SemanticTokenModifiers_Deprecated] + tokenizeRestriction :: Restriction -> [SemanticTokenAbsolute] tokenizeRestriction (Restriction _loc tope term) = concat [ tokenizeTope tope@@ -211,11 +239,28 @@ , tokenizeTerm cube , tokenizeTope tope ]+ ParamTermModalType _loc pat md type_ -> concat+ [ tokenizeTerm pat+ , tokenizeModality md+ , tokenizeTerm type_ ] +tokenizeModality :: Modality -> [SemanticTokenAbsolute]+tokenizeModality md = mkToken md SemanticTokenTypes_Decorator []++tokenizeModComp :: ModComp -> [SemanticTokenAbsolute]+tokenizeModComp = \case+ Single _loc md -> tokenizeModality md+ Comp _loc app inn -> tokenizeModality app <> tokenizeModality inn+ tokenizeSigmaParam :: SigmaParam -> [SemanticTokenAbsolute]-tokenizeSigmaParam (SigmaParam _loc pat type_) = concat - [ tokenizePattern pat - , tokenizeTerm type_ ]+tokenizeSigmaParam = \case+ SigmaParam _loc pat type_ -> concat+ [ tokenizePattern pat+ , tokenizeTerm type_ ]+ SigmaParamModal _loc pat md type_ -> concat+ [ tokenizePattern pat+ , tokenizeModality md+ , tokenizeTerm type_ ] mkToken :: (HasPosition a, Print a) => a -> SemanticTokenTypes -> [SemanticTokenModifiers] -> [SemanticTokenAbsolute] mkToken x tokenType tokenModifiers =
src/Rzk/Format.hs view
@@ -13,62 +13,72 @@ module Rzk.Format ( FormattingEdit (FormattingEdit), formatTextEdits,- format, formatFile, formatFileWrite,+ format, formatDocument, formatFile, formatFileWrite, isWellFormatted, isWellFormattedFile,+ normalizeTabs, ) where -import Data.List (elemIndex, sort)+import Data.List (sort) -import qualified Data.Text as T-import qualified Data.Text.IO as T+import qualified Data.Text as T+import qualified Data.Text.IO as T -import Language.Rzk.Syntax (tryExtractMarkdownCodeBlocks,- resolveLayout)-import Language.Rzk.Syntax.Lex (Posn (Pn), Tok (..),- TokSymbol (TokSymbol),- Token (PT), tokens)+import Language.Rzk.Syntax (resolveLayout,+ tryExtractMarkdownCodeBlocks)+import Language.Rzk.Syntax.Lex (Posn (Pn), Tok (..),+ TokSymbol (TokSymbol), Token (PT),+ tokens) -- | All indices are 1-based (as received from the lexer) -- Note: LSP uses 0-based indices-data FormattingEdit = FormattingEdit Int Int Int Int String+data FormattingEdit = FormattingEdit Int Int Int Int T.Text deriving (Eq, Ord, Show) -- TODO: more patterns, e.g. for identifiers and literals-pattern Symbol :: String -> Tok+pattern Symbol :: T.Text -> Tok pattern Symbol s <- TK (TokSymbol s _) -pattern Token :: String -> Int -> Int -> Token+pattern Token :: T.Text -> Int -> Int -> Token pattern Token s line col <- PT (Pn _ line col) (Symbol s) -- pattern TokenSym :: String -> Int -> Int -> Token -- pattern TokenSym s line col <- PT (Pn _ line col) (Symbol s) -pattern TokenIdent :: String -> Int -> Int -> Token+pattern TokenIdent :: T.Text -> Int -> Int -> Token pattern TokenIdent s line col <- PT (Pn _ line col) (T_VarIdentToken s) data FormatState = FormatState- { parensDepth :: Int -- ^ The level of parentheses nesting- , definingName :: Bool -- ^ After #define, in name or assumptions (to detect the : for the type)- , lambdaArrow :: Bool -- ^ After a lambda '\', in the parameters (to leave its -> on the same line)- , allTokens :: [Token] -- ^ The full array of tokens after resolving the layout+ { parensDepth :: Int -- ^ The level of parentheses nesting+ , letDepth :: Int -- ^ The level of #let nesting+ , definingName :: Bool -- ^ After #define, in name or assumptions (to detect the : for the type)+ , lambdaArrow :: Bool -- ^ After a lambda '\', in the parameters (to leave its -> on the same line)+ , eqBraceDepth :: Int -- ^ Depth inside =_{ ... }; 0 = not inside, 1 = at top level after =_{+ , eqBraceOnOwnLine :: Bool -- ^ True if the current =_{ started at the beginning of its line (after spaces)+ , allTokens :: [Token] -- ^ The full array of tokens after resolving the layout } --- TODO: replace all tabs with 1 space before processing-formatTextEdits :: String -> [FormattingEdit]+-- | Replace every tab character with a single space.+-- Call this before 'formatTextEdits' so that the lexer and edit positions+-- are consistent (BNFC column counts are undefined when the source contains tabs).+normalizeTabs :: T.Text -> T.Text+normalizeTabs = T.replace "\t" " "++formatTextEdits :: T.Text -> [FormattingEdit] formatTextEdits contents = case resolveLayout True (tokens rzkBlocks) of- Left _err -> [] -- TODO: log error (in a CLI and LSP friendly way)+ Left _err -> [] -- TODO: log error (in a CLI and LSP friendly way) Right allToks -> go (initialState {allTokens = allToks}) allToks where- initialState = FormatState { parensDepth = 0, definingName = False, lambdaArrow = False, allTokens = [] }+ initialState = FormatState { parensDepth = 0, letDepth = 0, definingName = False, lambdaArrow = False, eqBraceDepth = 0, eqBraceOnOwnLine = False, allTokens = [] } incParensDepth s = s { parensDepth = parensDepth s + 1 } decParensDepth s = s { parensDepth = 0 `max` (parensDepth s - 1) }- rzkBlocks = tryExtractMarkdownCodeBlocks "rzk" contents -- TODO: replace tabs with spaces- contentLines line = lines rzkBlocks !! (line - 1) -- Sorry+ rzkBlocks = tryExtractMarkdownCodeBlocks "rzk" contents+ contentLines line = T.lines rzkBlocks !! (line - 1) -- Sorry lineTokensBefore toks line col = filter isBefore toks where isBefore (PT (Pn _ l c) _) = l == line && c < col isBefore _ = False+ unicodeTokens :: [(T.Text, T.Text)] unicodeTokens = [ ("->", "→") , ("|->", "↦")@@ -82,14 +92,19 @@ , ("0_2", "0₂") , ("1_2", "1₂") , ("*", "×")+ , ("_b", "♭")+ , ("_#", "♯")+ , ("_op", "ᵒᵖ")+ , ("flip_op", "flipᵒᵖ")+ , ("unflip_op", "unflipᵒᵖ")+ , ("inv_op", "invᵒᵖ")+ , ("uninv_op", "uninvᵒᵖ") ] go :: FormatState -> [Token] -> [FormattingEdit] go _ [] = [] go s (Token "#lang" langLine langCol : Token "rzk-1" rzkLine rzkCol : tks)- -- FIXME: Tab characters break this because BNFC increases the column number to the next multiple of 8- -- Should probably check the first field of Pn (always incremented by 1)- -- Or `tabSize` param sent along the formatting request- -- But we should probably convert tabs to spaces first before any other formatting+ -- Tab characters would break column counts (BNFC uses next multiple of 8); call 'format'+ -- or pass 'normalizeTabs' output to 'formatTextEdits' so input is tab-free. = edits ++ go s tks where edits = map snd $ filter fst@@ -116,6 +131,10 @@ go s (Token "#def" line col : tks) = go s (PT (Pn 0 line col) (TK (TokSymbol "#define" 0)):tks) -- TODO: similarly for other commands + go s (Token "let" _ _ : tks) = go (s { letDepth = letDepth s + 1 }) tks++ go s (Token "in" _ _ : tks) = go (s { letDepth = max 0 (letDepth s - 1) }) tks+ -- Ensure exactly one space after the first open paren of a line go s (Token "(" line col : tks) | precededBySingleCharOnly && spacesAfter /= 1 && not isLastNonSpaceChar@@ -131,7 +150,8 @@ spaceCol = col + 1 lineContent = contentLines line precededBySingleCharOnly = all isPunctuation (lineTokensBefore (allTokens s) line col)- singleCharUnicodeTokens = filter (\(_, unicode) -> length unicode == 1) unicodeTokens+ singleCharUnicodeTokens = filter (\(_, unicode) -> T.length unicode == 1) unicodeTokens+ punctuations :: [T.Text] punctuations = concat [ map fst singleCharUnicodeTokens -- ASCII sequences will be converted soon , map snd singleCharUnicodeTokens@@ -139,33 +159,68 @@ ] isPunctuation (Token tk _ _) = tk `elem` punctuations isPunctuation _ = False- spacesAfter = length $ takeWhile (== ' ') (drop col lineContent)- isLastNonSpaceChar = all (== ' ') (drop col lineContent)+ spacesAfter = T.length $ T.takeWhile (== ' ') (T.drop col lineContent)+ isLastNonSpaceChar = T.all (== ' ') (T.drop col lineContent) -- Remove any space before the closing paren go s (Token ")" line col : tks) = edits ++ go (decParensDepth s) tks where lineContent = contentLines line- isFirstNonSpaceChar = all (== ' ') (take (col - 1) lineContent)- spacesBefore = length $ takeWhile (== ' ') (reverse $ take (col - 1) lineContent)+ isFirstNonSpaceChar = T.all (== ' ') (T.take (col - 1) lineContent)+ spacesBefore = T.length $ T.takeWhile (== ' ') (T.reverse $ T.take (col - 1) lineContent) edits = map snd $ filter fst [ (not isFirstNonSpaceChar && spacesBefore > 0, FormattingEdit line (col - spacesBefore) line col "") ] + -- Enter =_{ ... } (identity type with explicit type): track depth for newline-after-} rule (style guide)+ -- Only apply newline-after-} when the outermost =_{ is on its own line. Increment depth for nesting.+ go s (Token "=_{" line col : tks)+ = go (s { eqBraceDepth = eqBraceDepth s + 1, eqBraceOnOwnLine = if eqBraceDepth s == 0 then isOnOwnLine else eqBraceOnOwnLine s }) tks+ where+ lineContent = contentLines line+ isOnOwnLine = T.all (== ' ') (T.take (col - 1) lineContent)++ -- Count braces inside =_{ ... } so we detect the closing }+ go s (Token "{" _line _col : tks)+ = go (s { eqBraceDepth = if eqBraceDepth s > 0 then eqBraceDepth s + 1 else 0 }) tks++ -- Newline after the closing } of =_{ ... } only when =_{ was on its own line (style guide)+ go s (Token "}" line col : tks)+ = eqBraceEdits ++ go s' tks+ where+ closingEqBrace = eqBraceDepth s == 1+ onOwnLine = eqBraceOnOwnLine s+ s' | eqBraceDepth s > 0 = s { eqBraceDepth = eqBraceDepth s - 1, eqBraceOnOwnLine = if eqBraceDepth s == 1 then False else eqBraceOnOwnLine s }+ | otherwise = s+ lineContent = contentLines line+ braceEndCol = col + 1 -- 1-based column right after "}"+ afterBrace = T.drop (braceEndCol - 1) lineContent+ spacesAfter = T.length $ T.takeWhile (== ' ') afterBrace+ isLastOnLine = T.all (== ' ') afterBrace+ eqBraceEdits+ | closingEqBrace && onOwnLine && not isLastOnLine+ = [ FormattingEdit line braceEndCol line (braceEndCol + spacesAfter) "\n " ]+ | closingEqBrace && onOwnLine && isLastOnLine+ = let nextLine = if line < length (T.lines rzkBlocks) then contentLines (line + 1) else ""+ spacesNextLine = T.length $ T.takeWhile (== ' ') nextLine+ in if spacesNextLine /= 2 then [ FormattingEdit (line + 1) 1 (line + 1) (1 + spacesNextLine) " " ] else []+ | otherwise+ = []+ -- line break before : (only the top-level one) and one space after go s (Token ":" line col : tks) | isDefinitionTypeSeparator = typeSepEdits ++ go (s {definingName = False}) tks | otherwise = normalEdits ++ go s tks where- isDefinitionTypeSeparator = parensDepth s == 0 && definingName s+ isDefinitionTypeSeparator = parensDepth s == 0 && letDepth s == 0 && definingName s lineContent = contentLines line- isFirstNonSpaceChar = all (== ' ') (take (col - 1) lineContent)- isLastNonSpaceChar = all (== ' ') (drop col lineContent)- spacesBefore = length $ takeWhile (== ' ') (reverse $ take (col - 1) lineContent)+ isFirstNonSpaceChar = T.all (== ' ') (T.take (col - 1) lineContent)+ isLastNonSpaceChar = T.all (== ' ') (T.drop col lineContent)+ spacesBefore = T.length $ T.takeWhile (== ' ') (T.reverse $ T.take (col - 1) lineContent) spaceCol = col + 1- spacesAfter = length $ takeWhile (== ' ') (drop col lineContent)+ spacesAfter = T.length $ T.takeWhile (== ' ') (T.drop col lineContent) typeSepEdits = map snd $ filter fst -- Ensure line break before : (and remove any spaces before) [ (not isFirstNonSpaceChar, FormattingEdit line (col - spacesBefore) line col "\n ")@@ -175,30 +230,46 @@ , (not isLastNonSpaceChar && spacesAfter /= 1, FormattingEdit line spaceCol line (spaceCol + spacesAfter) " ") ]+ -- When colon is on its own line inside parentheses, align with parameter name on previous line (issue #215)+ prevLine = if line > 1 then contentLines (line - 1) else ""+ paramNameCol =+ case T.findIndex (== '(') prevLine of+ Just parenIdx ->+ let afterParen = T.drop (parenIdx + 1) prevLine+ spacesAfterParen = T.length (T.takeWhile (== ' ') afterParen)+ in parenIdx + 2 + spacesAfterParen -- 1-based column of first char of param name+ Nothing -> 2 -- fallback: 1 space (column 2)+ alignSpaces = T.replicate (paramNameCol - 1) " " normalEdits = map snd $ filter fst- -- 1 space before :- [ (spacesBefore /= 1, FormattingEdit line (col - spacesBefore) line col " ")+ -- Inside parens with colon on its own line: align with param name; else 1 space before :+ [ (isFirstNonSpaceChar && parensDepth s > 0 && spacesBefore /= paramNameCol - 1,+ FormattingEdit line 1 line col alignSpaces)+ , (not isFirstNonSpaceChar && spacesBefore /= 1,+ FormattingEdit line (col - spacesBefore) line col " ") -- 1 space after , (not isLastNonSpaceChar && spacesAfter /= 1, FormattingEdit line spaceCol line (spaceCol + spacesAfter) " ") ] - -- Line break before := and one space after+ -- Line break before := (only the top-level one) and one space after go s (Token ":=" line col : tks)- = edits ++ go s tks+ | letDepth s == 0 = defEdits ++ edits ++ go s tks+ | otherwise = edits ++ go s tks where lineContent = contentLines line- isFirstNonSpaceChar = all (== ' ') (take (col - 1) lineContent)- spacesAfter = length $ takeWhile (== ' ') (drop (col + 1) lineContent)- spacesBefore = length $ takeWhile (== ' ') (reverse $ take (col - 1) lineContent)- edits = map snd $ filter fst- -- Ensure line break before `:=`+ isFirstNonSpaceChar = T.all (== ' ') (T.take (col - 1) lineContent)+ spacesAfter = T.length $ T.takeWhile (== ' ') (T.drop (col + 1) lineContent)+ spacesBefore = T.length $ T.takeWhile (== ' ') (T.reverse $ T.take (col - 1) lineContent)+ defEdits = map snd $ filter fst+ -- Ensure line break before `:=` for #def [ (not isFirstNonSpaceChar, FormattingEdit line (col - spacesBefore) line col "\n ") -- Ensure 2 spaces before `:=` (if already on a new line) , (isFirstNonSpaceChar && spacesBefore /= 2, FormattingEdit line 1 line col " ")+ ]+ edits = map snd $ filter fst -- Ensure exactly one space after- , (length lineContent > col + 2 && spacesAfter /= 1,+ [ (T.length lineContent > col + 2 && spacesAfter /= 1, FormattingEdit line (col + 2) line (col + 2 + spacesAfter) " ") ] @@ -207,8 +278,8 @@ = edits ++ go (s { lambdaArrow = True }) tks where lineContent = contentLines line- spacesAfter = length $ takeWhile (== ' ') (drop col lineContent)- isLastNonSpaceChar = all (== ' ') (drop col lineContent)+ spacesAfter = T.length $ T.takeWhile (== ' ') (T.drop col lineContent)+ isLastNonSpaceChar = T.all (== ' ') (T.drop col lineContent) spaceCol = col + 1 edits = map snd $ filter fst [ (not isLastNonSpaceChar && spacesAfter /= 1,@@ -225,17 +296,17 @@ | otherwise = s isArrow = tk `elem` ["->", "→"] lineContent = contentLines line- spacesBefore = length $ takeWhile (== ' ') (reverse $ take (col - 1) lineContent)- spacesAfter = length $ takeWhile (== ' ') (drop (col + length tk - 1) lineContent)- isFirstNonSpaceChar = all (== ' ') (take (col - 1) lineContent)- isLastNonSpaceChar = all (== ' ') (drop (col + length tk - 1) lineContent)+ spacesBefore = T.length $ T.takeWhile (== ' ') (T.reverse $ T.take (col - 1) lineContent)+ spacesAfter = T.length $ T.takeWhile (== ' ') (T.drop (col + T.length tk - 1) lineContent)+ isFirstNonSpaceChar = T.all (== ' ') (T.take (col - 1) lineContent)+ isLastNonSpaceChar = T.all (== ' ') (T.drop (col + T.length tk - 1) lineContent) prevLine | line > 0 = contentLines (line - 1) | otherwise = "" nextLine- | line + 1 < length (lines rzkBlocks) = contentLines (line + 1)+ | line + 1 < length (T.lines rzkBlocks) = contentLines (line + 1) | otherwise = ""- spacesNextLine = length $ takeWhile (== ' ') nextLine+ spacesNextLine = T.length $ T.takeWhile (== ' ') nextLine edits = spaceEdits ++ unicodeEdits spaceEdits | tk `elem` ["->", "→", ",", "*", "×", "="] = concatMap snd $ filter fst@@ -244,71 +315,81 @@ [FormattingEdit line (col - spacesBefore) line col " "]) -- Ensure exactly one space after (unless last char in line) , (not isLastNonSpaceChar && spacesAfter /= 1,- [FormattingEdit line (col + length tk) line (col + length tk + spacesAfter) " "])+ [FormattingEdit line (col + T.length tk) line (col + T.length tk + spacesAfter) " "]) -- If last char in line, move it to next line (except for lambda arrow) , (isLastNonSpaceChar && not (lambdaArrow s), -- This is split into 2 edits to avoid possible overlap with unicode replacement -- 1. Add a new line (with relevant spaces) before the token [ FormattingEdit line (col - spacesBefore) line col $- "\n" ++ replicate (2 `max` (spacesNextLine - (spacesNextLine `min` 2))) ' '+ "\n" <> T.replicate (2 `max` (spacesNextLine - (spacesNextLine `min` 2))) " " -- 2. Replace the new line and spaces after the token with a single space- , FormattingEdit line (col + length tk) (line + 1) (spacesNextLine + 1) " "+ , FormattingEdit line (col + T.length tk) (line + 1) (spacesNextLine + 1) " " ]) -- If lambda -> is first char in line, move it to the previous line , (isFirstNonSpaceChar && isArrow && lambdaArrow s,- [FormattingEdit (line - 1) (length prevLine + 1) line (col + length tk + spacesAfter) $- " " ++ tk ++ "\n" ++ replicate spacesBefore ' '])+ [FormattingEdit (line - 1) (T.length prevLine + 1) line (col + T.length tk + spacesAfter) $+ " " <> tk <> "\n" <> T.replicate spacesBefore " "]) ] | otherwise = [] unicodeEdits | Just unicodeToken <- tk `lookup` unicodeTokens =- [ FormattingEdit line col line (col + length tk) unicodeToken+ [ FormattingEdit line col line (col + T.length tk) unicodeToken ] | otherwise = [] go s (_:tks) = go s tks -- Adapted from https://hackage.haskell.org/package/lsp-types-2.1.0.0/docs/Language-LSP-Protocol-Types.html#g:7-applyTextEdit :: FormattingEdit -> String -> String+applyTextEdit :: FormattingEdit -> T.Text -> T.Text applyTextEdit (FormattingEdit sl sc el ec newText) oldText = let (_, afterEnd) = splitAtPos (el-1, ec -1) oldText (beforeStart, _) = splitAtPos (sl-1, sc-1) oldText in mconcat [beforeStart, newText, afterEnd] where- splitAtPos :: (Int, Int) -> String -> (String, String)- splitAtPos (l, c) t = let index = c + startLineIndex l t in splitAt index t+ splitAtPos :: (Int, Int) -> T.Text -> (T.Text, T.Text)+ splitAtPos (l, c) t = let index = c + startLineIndex l t in T.splitAt index t - startLineIndex :: Int -> String -> Int+ startLineIndex :: Int -> T.Text -> Int startLineIndex 0 _ = 0 startLineIndex line t' =- case elemIndex '\n' t' of- Just i -> i + 1 + startLineIndex (line - 1) (drop (i + 1) t')- Nothing -> length t'+ case T.findIndex (=='\n') t' of+ Just i -> i + 1 + startLineIndex (line - 1) (T.drop (i + 1) t')+ Nothing -> T.length t' -applyTextEdits :: [FormattingEdit] -> String -> String+applyTextEdits :: [FormattingEdit] -> T.Text -> T.Text applyTextEdits edits contents = foldr applyTextEdit contents (sort edits) -- | Format Rzk code, returning the formatted version.-format :: String -> String-format = applyTextEdits =<< formatTextEdits+-- Tabs are normalized to single spaces before formatting.+format :: T.Text -> T.Text+format contents =+ let normalized = normalizeTabs contents+ in applyTextEdits (formatTextEdits normalized) normalized +-- | Same as 'format'. Use this when replacing the entire document (e.g. from+-- the language server), so that tab normalization and all formatting rules+-- are applied correctly instead of applying incremental edits to tabbed source.+formatDocument :: T.Text -> T.Text+formatDocument = format+ -- | Format Rzk code from a file-formatFile :: FilePath -> IO String+formatFile :: FilePath -> IO T.Text formatFile path = do contents <- T.readFile path- return (format (T.unpack contents))+ return (format contents) -- | Format the file and write the result back to the file. formatFileWrite :: FilePath -> IO ()-formatFileWrite path = formatFile path >>= writeFile path+formatFileWrite path = formatFile path >>= T.writeFile path -- | Check if the given Rzk source code is well formatted. -- This is useful for automation tasks.-isWellFormatted :: String -> Bool-isWellFormatted src = null (formatTextEdits src)+-- Tabs are normalized to single spaces before checking.+isWellFormatted :: T.Text -> Bool+isWellFormatted src = null (formatTextEdits (normalizeTabs src)) -- | Same as 'isWellFormatted', but reads the source code from a file. isWellFormattedFile :: FilePath -> IO Bool isWellFormattedFile path = do contents <- T.readFile path- return (isWellFormatted (T.unpack contents))+ return (isWellFormatted contents)
src/Rzk/Main.hs view
@@ -7,6 +7,8 @@ import Control.Monad (forM, when) import Data.List (sort)+import qualified Data.Text as T+import qualified Data.Text.IO as T import qualified Data.Yaml as Yaml import System.Directory (doesPathExist) import System.FilePath.Glob (glob)@@ -19,11 +21,11 @@ parseStdin :: IO Rzk.Module parseStdin = do- result <- Rzk.parseModule <$> getContents+ result <- Rzk.parseModule <$> T.getContents case result of Left err -> do- putStrLn ("An error occurred when parsing stdin")- error err+ putStrLn "An error occurred when parsing stdin"+ error (T.unpack err) Right rzkModule -> return rzkModule -- | Finds matches to the given pattern in the current working directory.@@ -80,23 +82,23 @@ expandedPaths <- foldMap globNonEmpty paths forM expandedPaths $ \path -> do putStrLn ("Loading file " <> path)- result <- Rzk.parseModule <$> readFile path+ result <- Rzk.parseModule <$> T.readFile path case result of Left err -> do putStrLn ("An error occurred when parsing file " <> path)- error err+ error (T.unpack err) Right rzkModule -> return (path, rzkModule) -typecheckString :: String -> Either String String+typecheckString :: T.Text -> Either T.Text T.Text typecheckString moduleString = do rzkModule <- Rzk.parseModule moduleString case defaultTypeCheck (typecheckModules [rzkModule]) of- Left err -> Left $ unlines+ Left err -> Left $ T.unlines [ "An error occurred when typechecking!" , "Rendering type error... (this may take a few seconds)"- , unlines+ , T.unlines [ "Type Error:"- , ppTypeErrorInScopedContext' BottomUp err+ , T.pack $ ppTypeErrorInScopedContext' BottomUp err ] ] Right _ -> pure "Everything is ok!"
src/Rzk/TypeCheck.hs view
@@ -246,6 +246,7 @@ unsetOption :: String -> TypeCheck var a -> TypeCheck var a unsetOption "verbosity" = localVerbosity (verbosity emptyContext)+unsetOption "render" = localRenderBackend (renderBackend emptyContext) unsetOption optionName = const $ issueTypeError $ TypeErrorOther ("unknown option " <> show optionName) @@ -258,6 +259,8 @@ [ Rzk.ParamTermType loc (patternToTerm pat) ty | pat <- pats ] paramToParamDecl Rzk.ParamPattern{} = issueTypeError $ TypeErrorOther "untyped pattern in parameters"+paramToParamDecl (Rzk.ParamPatternModalType loc pats md ty) = pure+ [ Rzk.ParamTermModalType loc (patternToTerm pat) md ty | pat <- pats ] addParamDecls :: [Rzk.ParamDecl] -> Rzk.Term -> Rzk.Term addParamDecls [] = id@@ -273,6 +276,10 @@ | TypeErrorUnify (TermT var) (TermT var) (TermT var) | TypeErrorUnifyTerms (TermT var) (TermT var) | TypeErrorNotPair (TermT var) (TermT var)+ | TypeErrorNotModal (Term var) TModality (TermT var)+ | TypeErrorModalityMismatch TModality TModality (Term var)+ | TypeErrorUnaccessibleVar var TModality TModality+ | TypeErrorNotTypeInModal (TermT var) | TypeErrorNotFunction (TermT var) (TermT var) | TypeErrorUnexpectedLambda (Term var) (TermT var) | TypeErrorUnexpectedPair (Term var) (TermT var)@@ -326,6 +333,30 @@ TypeFunT{} -> "\nPerhaps the term is applied to too few arguments?" _ -> "" ]+ TypeErrorNotModal term m ty -> block TopDown+ [ "expected modal type with <| " ++ show m ++ " | ? |>"+ , "but got type"+ , " " <> show (untyped ty)+ , "for term"+ , " " <> show term+ ]+ TypeErrorModalityMismatch expected actual term -> block TopDown+ [ "modality mismatch"+ , " expected " <> show expected+ , " but got " <> show actual+ , "for term"+ , " " <> show term+ ]+ TypeErrorUnaccessibleVar _var varMod locks -> block TopDown+ [ "variable is not accessible"+ , " variable has modality " <> show varMod+ , " but is used under locks " <> show locks+ ]+ TypeErrorNotTypeInModal ty -> block TopDown+ [ "expected a type inside modal type"+ , "but got"+ , " " <> show (untyped ty)+ ] TypeErrorUnexpectedLambda term ty -> block TopDown [ "unexpected lambda abstraction"@@ -415,6 +446,7 @@ , " " <> Rzk.printTree (getVarIdent name) ] + ppTypeErrorInContext :: OutputDirection -> TypeErrorInContext VarIdent -> String ppTypeErrorInContext dir TypeErrorInContext{..} = block dir [ ppTypeError' typeErrorError@@ -485,6 +517,7 @@ | ActionNF (TermT var) | ActionCheckCoherence (TermT var, TermT var) (TermT var, TermT var) | ActionCloseSection (Maybe Rzk.SectionName)+ | ActionCheckLetValue (Maybe VarIdent) deriving (Functor, Foldable) type Action' = Action VarIdent@@ -573,7 +606,11 @@ [ "closing #section " <> Rzk.printTree sectionName , "and collecting assumptions (variables)"] + ActionCheckLetValue orig ->+ [ "checking the local definition "+ <> maybe "_" (Rzk.printTree . getVarIdent) orig ] + traceAction' :: Int -> Action' -> a -> a traceAction' n action = trace ("[debug]\n" <> ppAction n action) @@ -625,15 +662,48 @@ addVarToScope var info ScopeInfo{..} = ScopeInfo { scopeVars = (var, info) : scopeVars, .. } +addModalityToScope :: TModality -> ScopeInfo var -> ScopeInfo var+addModalityToScope md ScopeInfo{..} = ScopeInfo+ { scopeVars = map (\(var, VarInfo{..}) -> (var, VarInfo{ modAccum = comp modAccum md, ..})) scopeVars, .. }+ data VarInfo var = VarInfo { varType :: TermT var , varValue :: Maybe (TermT var)+ , varModality :: TModality+ , modAccum :: TModality , varOrig :: Maybe VarIdent , varIsAssumption :: Bool -- FIXME: perhaps, introduce something like decl kind?+ , varIsTopLevel :: Bool , varDeclaredAssumptions :: [var] , varLocation :: Maybe LocationInfo } deriving (Functor, Foldable) ++class ModeTheory m where+ iden :: m+ comp :: m -> m -> m+ coe :: m -> m -> Bool++instance ModeTheory TModality where+ iden = Id++ comp Flat Flat = Flat+ comp Flat Sharp = Flat+ comp Flat Op = Flat+ comp Op Flat = Flat+ comp Sharp Sharp = Sharp+ comp Sharp Flat = Sharp+ comp Sharp Op = Sharp+ comp Op Sharp = Sharp+ comp Op Op = Id+ comp Id m = m+ comp m Id = m++ coe Flat Id = True+ coe Id Sharp = True+ coe Flat Sharp = True+ coe a b = a == b+ data Context var = Context { localScopes :: [ScopeInfo var] , localTopes :: [TermT var]@@ -656,6 +726,12 @@ scope : scopes -> addVarToScope var info scope : scopes , .. } +applyModalityToScopes :: TModality -> [ScopeInfo var] -> [ScopeInfo var]+applyModalityToScopes md scopes = map (addModalityToScope md) scopes++applyModality :: TModality -> Context var -> Context var+applyModality md Context{..} = Context { localScopes = applyModalityToScopes md localScopes, .. }+ emptyContext :: Context var emptyContext = Context { localScopes = [ScopeInfo Nothing []]@@ -688,6 +764,15 @@ varOrigs :: Context var -> [(var, Maybe VarIdent)] varOrigs = map (fmap varOrig) . varInfos +varModalities :: Context var -> [(var, TModality)]+varModalities = map (fmap varModality) . varInfos++varLocks :: Context var -> [(var, TModality)]+varLocks = map (fmap modAccum) . varInfos++varTopLevels :: Context var -> [(var, Bool)]+varTopLevels = map (fmap varIsTopLevel) . varInfos+ withPartialDecls :: TypeCheck VarIdent ([Decl'], [err]) -> TypeCheck VarIdent ([Decl'], [err])@@ -753,6 +838,9 @@ { varType = insertExplicitAssumptionFor a decl varType , varValue = insertExplicitAssumptionFor a decl <$> varValue , varIsAssumption = varIsAssumption+ , varIsTopLevel = varIsTopLevel+ , varModality = varModality+ , modAccum = modAccum , varOrig = varOrig , varDeclaredAssumptions = varDeclaredAssumptions , varLocation = varLocation@@ -792,6 +880,9 @@ { varType = xType' , varValue = fmap (lambdaT xType' (varOrig aInfo) Nothing . abstract a) (varValue xInfo) , varIsAssumption = varIsAssumption xInfo+ , varIsTopLevel = varIsTopLevel xInfo+ , varModality = Id+ , modAccum = Id , varOrig = varOrig xInfo , varDeclaredAssumptions = varDeclaredAssumptions xInfo \\ [a] , varLocation = varLocation xInfo@@ -961,11 +1052,14 @@ checkTopLevelDuplicate x local update tc where- update = addVarInCurrentScope x VarInfo+ update = addVarInCurrentScope x VarInfo { varType = ty , varValue = term , varOrig = Just x+ , varModality = Id+ , modAccum = Id , varIsAssumption = isAssumption+ , varIsTopLevel = True , varDeclaredAssumptions = vars , varLocation = loc }@@ -995,7 +1089,12 @@ entailM :: Eq var => [TermT var] -> TermT var -> TypeCheck var Bool entailM topes tope = do -- genTopes <- generateTopesForPointsM (allTopePoints tope)- let topes' = nubTermT topes -- (topes <> genTopes)+ discreteAxioms <- generateTopesForModalCubeVarsM+ invAxioms <- mapM nfTope (concatMap generateInvAxioms topes)+ let flipAxioms = concatMap generateFlipAxioms topes+ flatAxioms = concatMap generateFlatAxioms topes+ sharpAxioms = concatMap generateSharpAxioms topes+ topes' = nubTermT (topes <> discreteAxioms <> flipAxioms <> invAxioms <> flatAxioms <> sharpAxioms) topes'' = simplifyLHSwithDisjunctions topes' topes''' = saturateTopes (allTopePoints tope) <$> topes'' prettyTopes <- mapM ppTermInContext (saturateTopes (allTopePoints tope) (simplifyLHS topes'))@@ -1004,6 +1103,45 @@ ("entail " <> intercalate ", " prettyTopes <> " |- " <> prettyTope) $ and <$> mapM (`solveRHSM` tope) topes''' +generateFlipAxioms :: TermT var -> [TermT var]+generateFlipAxioms = \case+ TopeEQT _ t Cube2_0T{} -> [topeEQT (modExtractT cube2T Id Op (cubeFlipT t)) cube2_1T]+ TopeEQT _ Cube2_0T{} t -> [topeEQT (modExtractT cube2T Id Op (cubeFlipT t)) cube2_1T]+ TopeEQT _ t Cube2_1T{} -> [topeEQT (modExtractT cube2T Id Op (cubeFlipT t)) cube2_0T]+ TopeEQT _ Cube2_1T{} t -> [topeEQT (modExtractT cube2T Id Op (cubeFlipT t)) cube2_0T]+ _ -> []++generateInvAxioms :: TermT var -> [TermT var]+generateInvAxioms = \case+ TypeModalT _ Op inner -> [topeUninvT inner]+ t -> [typeModalT topeT Op (topeInvT t)]+++generateFlatAxioms :: TermT var -> [TermT var]+generateFlatAxioms = \case+ TypeModalT _ Flat inner -> [inner]+ _ -> []+++generateSharpAxioms :: TermT var -> [TermT var]+generateSharpAxioms = \case+ t -> [typeModalT topeT Sharp t]++generateTopesForModalCubeVarsM :: Eq var => TypeCheck var [TermT var]+generateTopesForModalCubeVarsM = do+ infos <- asks varInfos+ fmap (nubTermT . concat) $ forM infos $ \(var, info) -> do+ ty' <- whnfT (varType info)+ case ty' of+ TypeModalT _ Flat inner -> do+ inner' <- whnfT inner+ if inner' == cube2T+ then do+ let pt = modExtractT cube2T Id Flat (Pure var)+ return [topeOrT (topeEQT pt cube2_0T) (topeEQT pt cube2_1T)]+ else return []+ _ -> return []+ entailTraceM :: Eq var => [TermT var] -> TermT var -> TypeCheck var Bool entailTraceM topes tope = do topes' <- mapM ppTermInContext topes@@ -1122,13 +1260,18 @@ , y <- points' , x /= y ] ]+ stars <- forM points $ \x -> do + xType <- typeOf x + return $ if (xType == cubeUnitT) + then [topeEQT x cubeUnitStarT] + else [] topes <- forM pairs $ \(x, y) -> do xType <- typeOf x yType <- typeOf y return $ if (xType == cube2T) && (yType == cube2T) then [topeOrT (topeLEQT x y) (topeLEQT y x)] else []- return (concat topes)+ return (concat (topes ++ stars)) allTopePoints :: Eq var => TermT var -> [TermT var] allTopePoints = nubTermT . foldMap subPoints . nubTermT . topePoints@@ -1149,6 +1292,7 @@ p@Pure{} -> [p] p@(Free (AnnF TypeInfo{..} _)) | Cube2T{} <- infoType -> [p]+ | CubeUnitT{} <- infoType -> [p] _ -> [] -- | Simplify the context, including disjunctions. See also 'simplifyLHS'.@@ -1206,6 +1350,12 @@ , tope `elem` topes , topeEQT r l `elem` topes ] -> return True+ TopeEQT _ty l r -> do + lType <- typeOf l + rType <- typeOf r + return $ case (lType, rType) of+ (CubeUnitT{}, CubeUnitT{}) -> True + _ -> False TopeLEQT _ty l r | l == r -> return True | solveRHS topes (topeEQT l r) -> return True@@ -1335,13 +1485,16 @@ setVariance variance = local $ \Context{..} -> Context { covariance = variance, .. } -enterScopeContext :: Maybe VarIdent -> TermT var -> Context var -> Context (Inc var)-enterScopeContext orig ty context =+enterScopeContext :: Maybe VarIdent -> TModality -> TermT var -> Maybe (TermT var) -> Context var -> Context (Inc var)+enterScopeContext orig md ty val context = addVarInCurrentScope Z VarInfo { varType = S <$> ty- , varValue = Nothing+ , varValue = fmap (S <$>) val , varOrig = orig+ , varModality = md+ , modAccum = Id , varIsAssumption = False+ , varIsTopLevel = False , varDeclaredAssumptions = [] , varLocation = location context }@@ -1349,10 +1502,21 @@ enterScope :: Maybe VarIdent -> TermT var -> TypeCheck (Inc var) b -> TypeCheck var b enterScope orig ty action = do- newContext <- asks (enterScopeContext orig ty)+ newContext <- asks (enterScopeContext orig Id ty Nothing) lift $ withExceptT (ScopedTypeError orig) $ runReaderT action newContext +enterScopeWithBind :: Maybe VarIdent -> TModality -> TermT var -> TermT var -> TypeCheck (Inc var) b -> TypeCheck var b+enterScopeWithBind orig md ty val action = do+ newContext <- asks (enterScopeContext orig md ty (Just val))+ lift $ withExceptT (ScopedTypeError orig) $+ runReaderT action newContext++enterModality :: TModality -> TypeCheck var b -> TypeCheck var b+enterModality md action = do+ newContext <- asks (applyModality md)+ lift $ runReaderT action newContext+ performing :: Eq var => Action var -> TypeCheck var a -> TypeCheck var a performing action tc = do ctx@Context{..} <- ask@@ -1486,6 +1650,8 @@ Cube2T{} -> pure tt Cube2_0T{} -> pure tt Cube2_1T{} -> pure tt+ CubeFlipT{} -> nfTope tt+ CubeUnflipT{} -> nfTope tt -- tope layer (except vars, pairs of points, and applications) TopeTopT{} -> pure tt@@ -1494,6 +1660,8 @@ TopeOrT{} -> nfTope tt TopeEQT{} -> nfTope tt TopeLEQT{} -> nfTope tt+ TopeInvT{} -> nfTope tt+ TopeUninvT{} -> nfTope tt -- type layer terms that should not be evaluated further LambdaT{} -> pure tt@@ -1553,11 +1721,22 @@ | TypeRestrictedT{} <- infoType info -> pure (AppT ty f' x) | otherwise -> do let ret' = substituteT x ret- tryRestriction ret' >>= \case -- FIXME: to many unnecessary checks?+ tryRestriction ret' >>= \case -- FIXME: too many unnecessary checks? Nothing -> pure (AppT ty { infoType = ret' } f' x) Just tt' -> whnfT tt' _ -> pure (AppT ty f' x)-+ + LetT _ty _orig _mparam val body ->+ whnfT (substituteT val body)+ LetModT _ty _orig app inn _mparam val body -> do+ val' <- whnfT val >>= \case+ ModAppT _ md t | md == inn -> whnfT t+ b' -> do+ bty <- typeOf b' >>= \case+ TypeModalT _ _ t -> pure t+ _ -> panicImpossible "not modal in letmod"+ pure (modExtractT bty app inn b')+ whnfT (substituteT val' body) FirstT ty t -> whnfT t >>= \case PairT _ l _r -> whnfT l@@ -1567,6 +1746,17 @@ whnfT t >>= \case PairT _ _l r -> whnfT r t' -> pure (SecondT ty t')+ TypeModalT ty md b -> do+ b' <- whnfT b+ pure (TypeModalT ty md b')+ ModAppT ty md b -> do+ whnfT b >>= \case+ ModExtractT _ _ inn t | inn == md -> whnfT t+ b' -> pure $ ModAppT ty md b'+ ModExtractT ty app inn b -> do+ whnfT b >>= \case+ ModAppT _ md t | inn == md -> whnfT t+ b' -> pure (ModExtractT ty app inn b') IdJT ty tA a tC d x p -> whnfT p >>= \case ReflT{} -> whnfT d@@ -1619,6 +1809,20 @@ -- cube layer with computation CubeProductT _ty l r -> cubeProductT <$> nfTope l <*> nfTope r + CubeFlipT _ t -> + nfTope t >>= \case+ CubeUnflipT _ t' -> pure t' + Cube2_0T{} -> pure (modAppT (typeModalT cubeT Op cube2T) Op cube2_1T) + Cube2_1T{} -> pure (modAppT (typeModalT cubeT Op cube2T) Op cube2_0T) + t' -> pure (cubeFlipT t')++ CubeUnflipT ty t ->+ nfTope t >>= \case+ CubeFlipT _ t' -> pure t' + ModAppT _ Op Cube2_0T{} -> pure cube2_1T + ModAppT _ Op Cube2_1T{} -> pure cube2_0T + t' -> pure (CubeUnflipT ty t')+ -- tope layer constants TopeTopT{} -> pure tt TopeBottomT{} -> pure tt@@ -1642,6 +1846,73 @@ TopeEQT ty l r -> TopeEQT ty <$> nfTope l <*> nfTope r TopeLEQT ty l r -> TopeLEQT ty <$> nfTope l <*> nfTope r + TopeInvT ty t ->+ -- Match And/Or on the *unnormalized* input: nfTope of a shape-restricted+ -- App produces a TopeAnd via shape-side-condition propagation, and+ -- distributing inv over that synthetic conjunction loops forever because+ -- the recursive topeInvT renormalizes the same App back into a TopeAnd.+ case t of+ TopeAndT _ phi psi -> nfTope $+ modAppT (typeModalT universeT Op topeT) Op+ (topeAndT+ (modExtractT topeT Id Op (topeInvT phi))+ (modExtractT topeT Id Op (topeInvT psi)))+ TopeOrT _ phi psi -> nfTope $+ modAppT (typeModalT universeT Op topeT) Op+ (topeOrT+ (modExtractT topeT Id Op (topeInvT phi))+ (modExtractT topeT Id Op (topeInvT psi)))+ _ ->+ nfTope t >>= \case+ TopeUninvT _ phi -> pure phi+ TopeLEQT _ x y -> nfTope $+ modAppT (typeModalT universeT Op topeT) Op+ (topeLEQT+ (modExtractT topeT Id Op (cubeFlipT y))+ (modExtractT topeT Id Op (cubeFlipT x)))+ TopeEQT _ x y -> nfTope $+ modAppT (typeModalT universeT Op topeT) Op+ (topeEQT+ (modExtractT topeT Id Op (cubeFlipT y))+ (modExtractT topeT Id Op (cubeFlipT x)))+ t' -> pure (TopeInvT ty t')++ TopeUninvT ty t ->+ nfTope t >>= \case+ TopeInvT _ phi -> pure phi+ ModAppT _ Op inner -> case inner of+ TopeLEQT _ x y ->+ nfTope $+ (topeLEQT+ (cubeUnflipT (modAppT (typeModalT cubeT Op cube2T) Op y))+ (cubeUnflipT (modAppT (typeModalT cubeT Op cube2T) Op x)))++ TopeEQT _ x y ->+ nfTope $+ (topeEQT+ (cubeUnflipT (modAppT (typeModalT cubeT Op cube2T) Op y))+ (cubeUnflipT (modAppT (typeModalT cubeT Op cube2T) Op x)))++ TopeAndT _ phi psi ->+ nfTope $+ (topeAndT+ (topeUninvT phi)+ (topeUninvT psi))++ TopeOrT _ phi psi ->+ nfTope $+ (topeOrT+ (topeUninvT phi)+ (topeUninvT psi))++ inner' ->+ pure $+ TopeUninvT ty+ (modAppT (typeModalT universeT Op topeT) Op inner')++ t' ->+ pure (TopeUninvT ty t')+ -- type ascriptions are ignored, since we already have a typechecked term TypeAscT _ty term _ty' -> nfTope term @@ -1672,7 +1943,26 @@ | TypeFunT _ty _origF param mtope _ret <- infoType ty -> LambdaT ty orig (Just (param, mtope)) <$> enterScope orig param (nfTope body) LambdaT{} -> panicImpossible "lambda with a non-function type in the tope layer"+ ModAppT ty md b -> + nfTope b >>= \case + ModExtractT _ _ inn t | inn == md -> pure t+ b' -> pure $ ModAppT ty md b' + ModExtractT ty app inn b ->+ nfTope b >>= \case+ ModAppT _ md t | inn == md -> pure t+ b' -> pure $ ModExtractT ty app inn b'+ LetModT _ty _orig app inn _mparam val body -> do+ val' <- nfTope val >>= \case+ ModAppT _ md t | md == inn -> return t+ b' -> do+ ty <- typeOf b' >>= \case+ TypeModalT _ _ t -> pure t+ _ -> panicImpossible "not modal in letmod"+ pure (modExtractT ty app inn b')+ nfTope (substituteT val' body) + TypeModalT ty md inner -> TypeModalT ty md <$> nfTope inner+ LetT _ty _orig _mparam val body -> nfTope (substituteT val body) TypeFunT{} -> panicImpossible "exposed function type in the tope layer" TypeSigmaT{} -> panicImpossible "dependent sum type in the tope layer" TypeIdT{} -> panicImpossible "identity type in the tope layer"@@ -1703,6 +1993,8 @@ -- cube layer with computation CubeProductT{} -> nfTope tt+ CubeFlipT{} -> nfTope tt+ CubeUnflipT{} -> nfTope tt -- tope layer constants TopeTopT{} -> pure tt@@ -1713,6 +2005,8 @@ TopeOrT{} -> nfTope tt TopeEQT{} -> nfTope tt TopeLEQT{} -> nfTope tt+ TopeInvT{} -> nfTope tt+ TopeUninvT{} -> nfTope tt -- type layer constants ReflT ty _x -> pure (ReflT ty Nothing)@@ -1753,6 +2047,17 @@ <$> (AppT ty <$> nfT f' <*> nfT x) <*> nfT (substituteT x tope) _ -> AppT ty <$> nfT f' <*> nfT x+ LetT _ty _orig _mparam val body ->+ nfT (substituteT val body)+ LetModT _ty _orig app inn _mparam val body -> do+ val' <- whnfT val >>= \case+ ModAppT _ md t | md == inn -> nfT t+ b' -> do+ bty <- typeOf b' >>= \case+ TypeModalT _ _ t -> pure t+ _ -> panicImpossible "not modal in letmod"+ pure (modExtractT bty app inn b')+ nfT (substituteT val' body) LambdaT ty orig _mparam body -> do case stripTypeRestrictions (infoType ty) of TypeFunT _ty _orig param mtope _ret -> do@@ -1795,8 +2100,17 @@ Nothing | [tt'] <- nubTermT (map snd rs) -> nfT tt' | otherwise -> pure tt--+ TypeModalT ty md b -> do+ b' <- nfT b+ pure (TypeModalT ty md b')+ ModAppT ty md b -> do+ whnfT b >>= \case+ ModExtractT _ _ inn t | inn == md -> nfT t+ b' -> ModAppT ty md <$> nfT b'+ ModExtractT ty app inn b -> do+ whnfT b >>= \case+ ModAppT _ md t | inn == md -> nfT t+ b' -> ModExtractT ty app inn <$> nfT b' TypeRestrictedT ty type_ rs -> do rs' <- forM rs $ \(tope, term) -> do nfTope tope >>= \case@@ -1824,6 +2138,21 @@ Nothing -> issueTypeError $ TypeErrorUndefined x Just ty -> return ty +modalityOfVar :: Eq var => var -> TypeCheck var (TModality)+modalityOfVar x = asks (lookup x . varModalities) >>= \case+ Nothing -> issueTypeError $ TypeErrorUndefined x+ Just m -> return m++locksOfVar :: Eq var => var -> TypeCheck var (TModality)+locksOfVar x = asks (lookup x . varLocks) >>= \case+ Nothing -> issueTypeError $ TypeErrorUndefined x+ Just m -> return m++isTopLevelVar :: Eq var => var -> TypeCheck var Bool+isTopLevelVar x = asks (lookup x . varTopLevels) >>= \case+ Nothing -> issueTypeError $ TypeErrorUndefined x+ Just b -> return b+ typeOfUncomputed :: Eq var => TermT var -> TypeCheck var (TermT var) typeOfUncomputed = \case Pure x -> typeOfVar x@@ -1878,9 +2207,9 @@ Contravariant -> Just . swap <$> etaMatch mterm actualVal expectedVal Invariant -> traceTypeCheck Debug "invariant" $ do -- FIXME: inefficient- traceTypeCheck Debug "invariant->covariant" $ + traceTypeCheck Debug "invariant->covariant" $ setVariance Covariant $ unifyInCurrentContext mterm expectedVal actualVal- traceTypeCheck Debug "invariant->contravariant" $ + traceTypeCheck Debug "invariant->contravariant" $ setVariance Contravariant $ unifyInCurrentContext mterm expectedVal actualVal return Nothing case mea of@@ -2053,6 +2382,9 @@ _ -> err _ -> err _ -> err+ + LetT{} -> panicImpossible "let at the root of WHNF"+ LetModT{} -> panicImpossible "let-mod at the root of WHNF" ReflT ty _x | TypeIdT _ty x _tA y <- infoType ty -> case actual' of@@ -2090,7 +2422,28 @@ | (tope, term) <- rs ] _ -> err -- FIXME: need better unification for restrictions+ TypeModalT _ty m ty ->+ case actual' of+ TypeModalT _ty' m' ty' -> do+ when (m' /= m) $ err+ unify Nothing ty ty'+ _ -> err+ ModAppT _ty m ty ->+ case actual' of+ ModAppT _ty' m' ty' -> do+ when (m' /= m) $ err+ unify Nothing ty ty'+ _ -> err+ ModExtractT _ty app inn te ->+ case actual' of+ ModExtractT _ty' app' inn' te' -> do+ when (app' /= app) $ err+ when (inn' /= inn) $ err+ unify Nothing te te'+ _ -> err+ _ -> panicImpossible "unexpected term in UNIFY" + where action = case mterm of Nothing -> ActionUnifyTerms expected actual@@ -2235,6 +2588,42 @@ , infoNF = Just cube2_1T , infoWHNF = Just cube2_1T } +cubeFlipT :: TermT var -> TermT var+cubeFlipT t = CubeFlipT info t+ where+ info = TypeInfo+ { infoType = typeModalT cube2T Op cube2T+ , infoNF = Nothing+ , infoWHNF = Nothing+ }++cubeUnflipT :: TermT var -> TermT var+cubeUnflipT t = CubeUnflipT info t+ where+ info = TypeInfo+ { infoType = cube2T+ , infoNF = Nothing+ , infoWHNF = Nothing+ }++topeInvT :: TermT var -> TermT var+topeInvT t = TopeInvT info t+ where+ info = TypeInfo+ { infoType = typeModalT topeT Op topeT+ , infoNF = Nothing+ , infoWHNF = Nothing+ }++topeUninvT :: TermT var -> TermT var+topeUninvT t = TopeUninvT info t+ where+ info = TypeInfo+ { infoType = topeT+ , infoNF = Nothing+ , infoWHNF = Nothing+ }+ topeTopT :: TermT var topeTopT = TopeTopT TypeInfo { infoType = topeT@@ -2278,6 +2667,27 @@ , infoWHNF = Just t } ++letT :: TermT var -> Maybe VarIdent -> Maybe (TermT var) -> TermT var -> Scope TermT var -> TermT var+letT ty orig mparam val body = t+ where+ t = LetT info orig mparam val body+ info = TypeInfo+ { infoType = ty+ , infoNF = Nothing+ , infoWHNF = Nothing+ }++letModT :: TermT var -> Maybe VarIdent -> TModality -> TModality -> Maybe (TermT var) -> TermT var -> Scope TermT var -> TermT var+letModT ty orig app inn mparam val body = t+ where+ t = LetModT info orig app inn mparam val body+ info = TypeInfo+ { infoType = ty+ , infoNF = Nothing+ , infoWHNF = Nothing+ }+ appT :: TermT var -> TermT var -> TermT var -> TermT var appT ty f x = t where@@ -2411,6 +2821,36 @@ , infoWHNF = Nothing } +typeModalT :: TermT var -> TModality -> TermT var -> TermT var+typeModalT ty md te = t+ where+ t = TypeModalT info md te+ info = TypeInfo+ { infoType = ty+ , infoNF = Nothing+ , infoWHNF = Nothing+ }++modAppT :: TermT var -> TModality -> TermT var -> TermT var+modAppT ty md term = t+ where+ t = ModAppT info md term+ info = TypeInfo+ { infoType = ty+ , infoNF = Nothing+ , infoWHNF = Nothing+ }++modExtractT :: TermT var -> TModality -> TModality -> TermT var -> TermT var+modExtractT ty app inn term = t+ where+ t = ModExtractT info app inn term+ info = TypeInfo+ { infoType = ty+ , infoNF = Nothing+ , infoWHNF = Nothing+ }+ typecheck :: Eq var => Term var -> TermT var -> TypeCheck var (TermT var) typecheck term ty = performing (ActionTypeCheck term ty) $ do whnfT ty >>= \case@@ -2462,7 +2902,36 @@ return (lambdaT ty' orig (Just (param', mtope')) body') _ -> issueTypeError $ TypeErrorUnexpectedLambda term ty-+ Let orig annot val body -> do+ val' <- performing (ActionCheckLetValue orig) $ case annot of+ Nothing -> infer val+ Just bindType -> do+ bindType' <- typecheck bindType universeT+ typecheck val bindType'+ bindTy <- typeOf val'+ body' <- enterScopeWithBind orig Id bindTy val' $ do+ typecheck body (S <$> ty')+ return (letT ty' orig (Just bindTy) val' body')+ LetMod orig app inn annot val body -> do+ val' <- performing (ActionCheckLetValue orig) $ case annot of+ Nothing -> enterModality app $ infer val+ Just bindType -> do+ bindType' <- infer bindType+ bindUniv <- typeOf bindType'+ enterModality app $ typecheck val (typeModalT bindUniv inn bindType')+ bindTy <- typeOf val' >>= \case+ o@(TypeModalT _ty md t) ->+ if md == inn then+ return t+ else+ issueTypeError $ TypeErrorNotModal (untyped o) inn val'+ o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'+ bindVal <- whnfT val' >>= \case+ ModAppT _ty _m t -> pure t+ o -> pure (modExtractT bindTy app inn o)+ body' <- enterScopeWithBind orig (comp app inn) bindTy bindVal $ do+ typecheck body (S <$> ty')+ return (letModT ty' orig app inn (Just bindTy) val' body') Pair l r -> case ty' of CubeProductT _ty a b -> do@@ -2490,6 +2959,14 @@ unifyTerms y z >> unifyTerms z y return (reflT ty' (Just (y, Just tA))) _ -> issueTypeError $ TypeErrorUnexpectedRefl term ty+ ModExtract{} -> panicImpossible "extract is an internal term and cannot be typechecked"+ ModApp md body -> case ty' of+ TypeModalT _ty md' tpe -> do+ when (md /= md') $ issueTypeError $+ TypeErrorModalityMismatch md' md term+ body' <- enterModality md $ typecheck body tpe+ return $ modAppT ty' md body'+ _ -> issueTypeError $ TypeErrorNotModal term md ty' -- FIXME: this does not make typechecking faster, why? -- RecOr rs -> do@@ -2500,7 +2977,6 @@ -- rterm' <- typecheck rterm ty -- return (tope', rterm') -- return (recOrT ty rs')- _ -> do term' <- infer term inferredType <- typeOf term'@@ -2517,7 +2993,13 @@ infer :: Eq var => Term var -> TypeCheck var (TermT var) infer tt = performing (ActionInfer tt) $ case tt of- Pure x -> pure (Pure x)+ Pure x -> do+ topLevel <- isTopLevelVar x+ unless topLevel $ do+ varMod <- modalityOfVar x+ locks <- locksOfVar x+ when (not (coe varMod locks)) $ issueTypeError $ TypeErrorUnaccessibleVar x varMod locks+ pure (Pure x) Universe -> pure universeT UniverseCube -> pure cubeT@@ -2529,12 +3011,18 @@ Cube2 -> pure cube2T Cube2_0 -> pure cube2_0T Cube2_1 -> pure cube2_1T- CubeProduct l r -> do l' <- typecheck l cubeT r' <- typecheck r cubeT return (cubeProductT l' r') + CubeFlip t -> do+ t' <- typecheck t cube2T+ return (cubeFlipT t')+ CubeUnflip t -> do+ t' <- typecheck t (typeModalT cubeT Op cube2T)+ return (cubeUnflipT t')+ Pair l r -> do l' <- infer l r' <- infer r@@ -2601,6 +3089,14 @@ r' <- typecheck r topeT return (topeOrT l' r') + TopeInv t -> do+ t' <- typecheck t topeT+ return (topeInvT t')++ TopeUninv t -> do+ t' <- typecheck t (typeModalT universeT Op topeT )+ return (topeUninvT t')+ RecBottom -> do contextEntails topeBottomT return recBottomT@@ -2733,7 +3229,38 @@ body' <- localTope tope' $ infer body ret <- typeOf body' return (lambdaT (typeFunT orig cube' (Just tope') ret) orig (Just (cube', Just tope')) body')-+ Let orig annot val body -> do+ val' <- performing (ActionCheckLetValue orig) $ case annot of+ Nothing -> infer val+ Just ty -> do+ bindTy <- typecheck ty universeT+ typecheck val bindTy+ bindTy <- typeOf val'+ enterScopeWithBind orig Id bindTy val' $ do+ body' <- infer body+ ret <- typeOf body'+ return (letT (substituteT val' ret) orig (Just bindTy) val' body')+ LetMod orig app inn annot val body -> do+ val' <- performing (ActionCheckLetValue orig) $ case annot of+ Nothing -> enterModality app $ infer val+ Just bindType -> do+ bindType' <- infer bindType+ bindUniv <- typeOf bindType'+ enterModality app $ typecheck val (typeModalT bindUniv inn bindType')+ bindTy <- typeOf val' >>= \case+ o@(TypeModalT _ty md t) ->+ if md == inn then+ return t+ else+ issueTypeError $ TypeErrorNotModal (untyped o) inn val'+ o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'+ bindVal <- whnfT val' >>= \case+ ModAppT _ty _m t -> pure t+ o -> pure (modExtractT bindTy app inn o)+ enterScopeWithBind orig (comp app inn) bindTy bindVal $ do+ body' <- infer body+ ret <- typeOf body'+ return (letModT (substituteT val' ret) orig app inn (Just bindTy) val' body') Refl Nothing -> issueTypeError $ TypeErrorCannotInferBareRefl tt Refl (Just (x, Nothing)) -> do x' <- inferAs universeT x@@ -2780,6 +3307,21 @@ return (tope', term') sequence_ [ checkCoherence l r | l:rs'' <- tails rs', r <- rs'' ] return (typeRestrictedT ty' rs')+ TypeModal md ty -> do+ ty' <- enterModality md $ infer ty+ universeTy <- typeOf ty'+ _ <- case universeTy of + UniverseT {} -> pure universeTy + UniverseCubeT {} -> pure universeTy + UniverseTopeT {} -> pure universeTy+ _ -> issueTypeError $ TypeErrorNotTypeInModal universeTy+ return (typeModalT universeTy md ty')+ ModApp md term -> do+ term' <- enterModality md $ infer term+ ty <- typeOf term'+ tyUniv <- typeOf ty+ return $ modAppT (typeModalT tyUniv md ty) md term'+ ModExtract _ _ _ -> error "untypable $extract$" checkCoherence :: Eq var@@ -3026,7 +3568,7 @@ renderForSubShapeSVG :: Eq var- => String+ => String -> Int -> [var] -> var
test/Rzk/FormatSpec.hs view
@@ -4,14 +4,15 @@ -} module Rzk.FormatSpec where +import qualified Data.Text.IO as T import Test.Hspec -import Rzk.Format (format, isWellFormatted)+import Rzk.Format (format, isWellFormatted) formatsTo :: FilePath -> FilePath -> Expectation formatsTo beforePath afterPath = do- beforeSrc <- readFile ("test/files/" ++ beforePath)- afterSrc <- readFile ("test/files/" ++ afterPath)+ beforeSrc <- T.readFile ("test/files/" ++ beforePath)+ afterSrc <- T.readFile ("test/files/" ++ afterPath) format beforeSrc `shouldBe` afterSrc isWellFormatted afterSrc `shouldBe` True -- idempotency @@ -41,8 +42,20 @@ it "Adds relevant spaces to structure constructions like a tree" $ do formats "tree-structure" + it "Aligns colons in split context with parameter name (issue #215)" $ do+ formats "context-colon-align"++ it "Inserts newline after =_{ ... }" $ do+ formats "identity-type-eq-brace"+ it "Doesn't fail on empty inputs" $ do formats "empty"++ it "Normalizes tabs to spaces" $ do+ formats "tabs"++ it "Let bindings formatting differs from defenitions" $ do+ formats "let" it "Fixes indentation" pending
+ test/Rzk/TypeCheckSpec.hs view
@@ -0,0 +1,307 @@+{-# OPTIONS_GHC -Wno-partial-fields #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+module Rzk.TypeCheckSpec (spec) where++import Control.Monad (forM, unless)+import Data.Aeson (FromJSON, withObject, (.:), (.:?))+import Data.Bifunctor (first)+import Data.List (isInfixOf, isPrefixOf)+import qualified Data.Text as T+import qualified Data.Text.IO as T+import qualified Data.Yaml as Yaml+import System.Directory (doesFileExist)+import System.Environment (lookupEnv)+import System.FilePath (dropExtension, (</>), takeDirectory,+ takeFileName)+import System.FilePath.Glob (compile, globDir1)++import Language.Rzk.Free.Syntax (VarIdent)+import qualified Language.Rzk.Syntax as Rzk+import Rzk.TypeCheck (Context (..), Decl', LocationInfo (..),+ OutputDirection (..), TypeError (..),+ TypeErrorInContext (..),+ TypeErrorInScopedContext (..),+ Verbosity (..), defaultTypeCheck,+ localVerbosity, ppTypeErrorInScopedContext',+ typecheckModulesWithLocation,+ typecheckModulesWithLocation')++import Test.Hspec+import Unsafe.Coerce (unsafeCoerce)++data Expect = Expect+ { expectStatus :: String+ , expectErrorTag :: Maybe String+ , expectMessageContains :: Maybe [String]+ , expectLine :: Maybe Int+ , expectRegressionFor :: Maybe [String]+ , expectModules :: Maybe [FilePath]+ , expectApi :: Maybe String+ } deriving (Show, Eq)++instance FromJSON Expect where+ parseJSON = withObject "Expect" $ \o -> Expect+ <$> o .: "status"+ <*> o .:? "error_tag"+ <*> o .:? "message_contains"+ <*> o .:? "line"+ <*> o .:? "regression_for"+ <*> o .:? "modules"+ <*> o .:? "api"++-- | Strip 'ScopedTypeError' layers; take the leaf 'TypeError'.+-- Scoped layers change the type parameter ('Inc'); we only need the constructor name, so 'unsafeCoerce' is used for recursion (same shape at runtime).+peelTypeError :: TypeErrorInScopedContext VarIdent -> TypeError VarIdent+peelTypeError = \case+ PlainTypeError e -> typeErrorError e+ ScopedTypeError _ e -> peelTypeError (unsafeCoerce e)++errorLine :: TypeErrorInScopedContext VarIdent -> Maybe Int+errorLine = \case+ PlainTypeError e ->+ location (typeErrorContext e) >>= locationLine+ ScopedTypeError _ e -> errorLine (unsafeCoerce e)++typeErrorConstructorName :: TypeError VarIdent -> String+typeErrorConstructorName = \case+ TypeErrorOther{} -> "TypeErrorOther"+ TypeErrorUnify{} -> "TypeErrorUnify"+ TypeErrorUnifyTerms{} -> "TypeErrorUnifyTerms"+ TypeErrorNotPair{} -> "TypeErrorNotPair"+ TypeErrorNotModal{} -> "TypeErrorNotModal"+ TypeErrorModalityMismatch{} -> "TypeErrorModalityMismatch"+ TypeErrorUnaccessibleVar{} -> "TypeErrorUnaccessibleVar"+ TypeErrorNotTypeInModal{} -> "TypeErrorNotTypeInModal"+ TypeErrorNotFunction{} -> "TypeErrorNotFunction"+ TypeErrorUnexpectedLambda{} -> "TypeErrorUnexpectedLambda"+ TypeErrorUnexpectedPair{} -> "TypeErrorUnexpectedPair"+ TypeErrorUnexpectedRefl{} -> "TypeErrorUnexpectedRefl"+ TypeErrorCannotInferBareLambda{} -> "TypeErrorCannotInferBareLambda"+ TypeErrorCannotInferBareRefl{} -> "TypeErrorCannotInferBareRefl"+ TypeErrorUndefined{} -> "TypeErrorUndefined"+ TypeErrorTopeNotSatisfied{} -> "TypeErrorTopeNotSatisfied"+ TypeErrorTopesNotEquivalent{} -> "TypeErrorTopesNotEquivalent"+ TypeErrorInvalidArgumentType{} -> "TypeErrorInvalidArgumentType"+ TypeErrorDuplicateTopLevel{} -> "TypeErrorDuplicateTopLevel"+ TypeErrorUnusedVariable{} -> "TypeErrorUnusedVariable"+ TypeErrorUnusedUsedVariables{} -> "TypeErrorUnusedUsedVariables"+ TypeErrorImplicitAssumption{} -> "TypeErrorImplicitAssumption"++casesRoot :: FilePath+casesRoot = "test/typecheck/cases"++-- | When running tests from a different cwd (e.g. some CI), set @RZK_TEST_ROOT@ to the @rzk/@ package directory.+resolveRoot :: IO FilePath+resolveRoot = do+ m <- lookupEnv "RZK_TEST_ROOT"+ case m of+ Just root | not (null root) -> pure root+ _ -> pure "."++globExpectPaths :: FilePath -> IO [FilePath]+globExpectPaths root =+ globDir1 (compile "**/*.expect.yaml") (root </> casesRoot)++globDirExpectPaths :: FilePath -> IO [FilePath]+globDirExpectPaths root =+ globDir1 (compile "**/expect.yaml") (root </> casesRoot)++readExpect :: FilePath -> IO (Either String Expect)+readExpect path = do+ e <- Yaml.decodeFileEither path+ pure $ first show e++loadModules :: [(FilePath, FilePath)] -> IO (Either String [(FilePath, Rzk.Module)])+loadModules [] = pure (Right [])+loadModules ((relPath, absPath) : rest) = do+ txt <- T.readFile absPath+ case Rzk.parseModule txt of+ Left err -> pure $ Left (T.unpack err)+ Right m -> fmap (fmap ((relPath, m) :)) $ loadModules rest++-- | Run the checker with @verbosity = Silent@ so @traceTypeCheck Normal@ does not+-- clutter @stack test@ output (CLI keeps default @Normal@ via @emptyContext@).+runStrict :: [(FilePath, Rzk.Module)] -> Either (TypeErrorInScopedContext VarIdent) [(FilePath, [Decl'])]+runStrict = defaultTypeCheck . localVerbosity Silent . typecheckModulesWithLocation++runCollect :: [(FilePath, Rzk.Module)] -> Either (TypeErrorInScopedContext VarIdent) ([(FilePath, [Decl'])], [TypeErrorInScopedContext VarIdent])+runCollect = defaultTypeCheck . localVerbosity Silent . typecheckModulesWithLocation'++assertExpect :: String -> Expect -> Either (TypeErrorInScopedContext VarIdent) [(FilePath, [Decl'])] -> IO ()+assertExpect _label Expect{..} (Right _) | expectStatus /= "ok" =+ expectationFailure "expected type error (status: error), but typechecking succeeded"+assertExpect label Expect{..} (Left err) | expectStatus == "ok" =+ expectationFailure $ "unexpected type error in " <> label <> ":\n"+ <> ppTypeErrorInScopedContext' BottomUp err+assertExpect label Expect{..} (Left err) | expectStatus == "error" = do+ let tag = typeErrorConstructorName (peelTypeError err)+ case expectErrorTag of+ Nothing -> expectationFailure "expect.yaml missing error_tag for status: error"+ Just want | want /= tag ->+ expectationFailure $ "wrong error constructor in " <> label <> ": wanted "+ <> want <> ", got " <> tag <> "\nFull message:\n"+ <> ppTypeErrorInScopedContext' BottomUp err+ Just _ -> pure ()+ case expectMessageContains of+ Nothing -> pure ()+ Just subs -> do+ let msg = ppTypeErrorInScopedContext' BottomUp err+ mapM_ (\s -> unless (s `isInfixOf` msg) $+ expectationFailure $ "in " <> label <> ", message missing substring "+ <> show s <> ":\n" <> msg) subs+ case expectLine of+ Nothing -> pure ()+ Just ln -> case errorLine err of+ Nothing -> expectationFailure $ "in " <> label <> ", expected line "+ <> show ln <> " but error has no line"+ Just got | got /= ln ->+ expectationFailure $ "in " <> label <> ", expected line " <> show ln+ <> " got " <> show got+ Just _ -> pure ()+assertExpect _label Expect{expectStatus = "ok"} (Right _) = pure ()+assertExpect label Expect{expectStatus = st} _ =+ expectationFailure $ "in " <> label <> ", unknown status " <> show st++assertExpectCollect :: String -> Expect -> Either (TypeErrorInScopedContext VarIdent) ([(FilePath, [Decl'])], [TypeErrorInScopedContext VarIdent]) -> IO ()+assertExpectCollect _label _ (Left err) =+ expectationFailure $ "unexpected fatal error: " <> ppTypeErrorInScopedContext' BottomUp err+assertExpectCollect label Expect{..} (Right (_decls, errs)) = case expectStatus of+ "ok" | not (null errs) ->+ expectationFailure $ "in " <> label <> ", expected ok but got errors: " <> show (length errs)+ "ok" -> pure ()+ "error" -> case errs of+ [] ->+ expectationFailure $ "in " <> label <> ", expected type errors but got none"+ err : _ -> do+ let tag = typeErrorConstructorName (peelTypeError err)+ case expectErrorTag of+ Nothing -> expectationFailure "expect.yaml missing error_tag for status: error"+ Just want | want /= tag ->+ expectationFailure $ "wrong error constructor in " <> label <> ": wanted "+ <> want <> ", got " <> tag+ Just _ -> pure ()+ case expectMessageContains of+ Nothing -> pure ()+ Just subs -> do+ let msg = ppTypeErrorInScopedContext' BottomUp err+ mapM_ (\s -> unless (s `isInfixOf` msg) $+ expectationFailure $ "in " <> label <> ", message missing substring "+ <> show s) subs+ case expectLine of+ Nothing -> pure ()+ Just ln -> case errorLine err of+ Nothing -> expectationFailure "expected line number on error"+ Just got | got /= ln ->+ expectationFailure $ "line mismatch: wanted " <> show ln <> " got " <> show got+ Just _ -> pure ()+ st ->+ expectationFailure $ "in " <> label <> ", unknown status " <> show st++data CaseKind+ = PairedCase+ { pcExpectPath :: FilePath+ , pcRzkPath :: FilePath+ , pcRelTitle :: String+ }+ | DirCase+ { dcDir :: FilePath+ , dcExpectPath :: FilePath+ , dcRelTitle :: String+ }++relTitleFrom :: FilePath -> FilePath -> FilePath+relTitleFrom root absP+ | root == "." = absP+ | root `isPrefixOf` absP = drop (length root + 1) absP+ | ("./" <> root) `isPrefixOf` absP = drop (length root + 3) absP+ | otherwise = absP++discoverCases :: FilePath -> IO [CaseKind]+discoverCases root = do+ paired <- globExpectPaths root+ let paired' = [ p | p <- paired, takeFileName p /= "expect.yaml" ]+ pairedKinds <- forM paired' $ \absExpect -> do+ let dir = takeDirectory absExpect+ fname = takeFileName absExpect+ baseName = dropExtension (dropExtension fname)+ absRzk = dir </> baseName <> ".rzk"+ absRzkMd = dir </> baseName <> ".rzk.md"+ absChosen <- do+ rzkOk <- doesFileExist absRzk+ if rzkOk+ then pure absRzk+ else do+ mdOk <- doesFileExist absRzkMd+ if mdOk+ then pure absRzkMd+ else ioError $ userError $+ "Missing twin .rzk or .rzk.md for " <> absExpect+ pure PairedCase+ { pcExpectPath = absExpect+ , pcRzkPath = absChosen+ , pcRelTitle = relTitleFrom root absExpect+ }+ dirExpects <- globDirExpectPaths root+ dirKinds <- forM dirExpects $ \absExpect -> do+ let dir = takeDirectory absExpect+ pure DirCase+ { dcDir = dir+ , dcExpectPath = absExpect+ , dcRelTitle = relTitleFrom root absExpect+ }+ pure (pairedKinds ++ dirKinds)++runCase :: CaseKind -> IO ()+runCase PairedCase{..} = do+ e <- readExpect pcExpectPath+ expect <- case e of+ Left err -> expectationFailure ("YAML " <> pcExpectPath <> ": " <> err) >> undefined+ Right x -> pure x+ txt <- T.readFile pcRzkPath+ root <- resolveRoot+ case Rzk.parseModule txt of+ Left perr -> expectationFailure $+ "parse failure in " <> relTitleFrom root pcRzkPath <> ":\n" <> T.unpack perr+ Right m -> do+ let relModPath = relTitleFrom root pcRzkPath+ mods = [(relModPath, m)]+ case expectApi expect of+ Just "collect" -> assertExpectCollect pcRelTitle expect (runCollect mods)+ _ -> assertExpect pcRelTitle expect (runStrict mods)+runCase DirCase{..} = do+ e <- readExpect dcExpectPath+ expect <- case e of+ Left err -> expectationFailure ("YAML " <> dcExpectPath <> ": " <> err) >> undefined+ Right x -> pure x+ root <- resolveRoot+ modRelAbs <- case expectModules expect of+ Nothing -> do+ let inp = dcDir </> "input.rzk"+ ok <- doesFileExist inp+ unless ok $ ioError $ userError $+ "Directory case " <> dcRelTitle <> ": add modules: [...] in expect.yaml or input.rzk"+ pure [(relTitleFrom root inp, inp)]+ Just names -> pure [(relTitleFrom root (dcDir </> n), dcDir </> n) | n <- names]+ modsE <- loadModules modRelAbs+ mods <- either (\msg -> expectationFailure ("load/parse in " <> dcRelTitle <> ": " <> msg) >> undefined) pure modsE+ case expectApi expect of+ Just "collect" -> assertExpectCollect dcRelTitle expect (runCollect mods)+ _ -> assertExpect dcRelTitle expect (runStrict mods)++spec :: Spec+spec = describe "Typecheck fixtures" $ do+ it "discovers at least one case" $ do+ root <- resolveRoot+ ks <- discoverCases root+ (length ks > 0) `shouldBe` True+ describe "cases" $ do+ root <- runIO resolveRoot+ ks <- runIO (discoverCases root)+ mapM_ (\k -> it (caseTitle k) (runCase k)) ks++caseTitle :: CaseKind -> String+caseTitle = \case+ PairedCase{..} -> pcRelTitle+ DirCase{..} -> dcRelTitle
+ test/typecheck/SCHEMA.md view
@@ -0,0 +1,27 @@+# Typecheck Tests Schema++Test cases live under `test/typecheck/cases/`.++## Paired file case++- `something.rzk` — Rzk source (must parse).+- `something.expect.yaml` — expectations for typechecking that file alone with `typecheckModulesWithLocation`.++## Directory case (multiple modules)++- `my-case/expect.yaml` — same fields as below, plus **`modules`** (non-empty list of filenames relative to that directory, typechecked in order).+- `*.rzk` files in that directory.++## YAML fields++| Field | Required | Description |+|--------|----------|-------------|+| `status` | yes | `ok` if typechecking must succeed; `error` if it must fail with a type error. |+| `error_tag` | if `status: error` | Name of the `TypeError` constructor after stripping `ScopedTypeError` wrappers, e.g. `TypeErrorUnify`, `TypeErrorUndefined`. |+| `message_contains` | no | Substrings that must all appear in the rendered error (`ppTypeErrorInScopedContext'`). |+| `line` | no | 1-based line number (approximate) in the Rzk file where the error is reported. |+| `regression_for` | no | Traceability: GitHub issue/PR URLs, commit themes, or short **semantic** rule names (e.g. `contextEquiv-recOR-boundary`). Avoid `TypeCheck.hs` line numbers and `issueTypeError-<line>` tags — they go stale. |+| `modules` | no | If set (directory case), ordered list of module files for one `typecheckModulesWithLocation` run. |+| `api` | no | Omit or `strict` (default): `typecheckModulesWithLocation` (throws on first error). `collect`: `typecheckModulesWithLocation'` — returns a list of errors without using `throwError`; note that the typechecker still stops per-module chaining when a module reports errors (see implementation in `Rzk.TypeCheck`). |++Parse failures are always test failures; they are not expressed in this schema.
+ test/typecheck/cases/happy-check.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - docs-en-reference-commands-check
+ test/typecheck/cases/happy-check.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#define id (A : U)+ : A → A+ := \ x → x++#check id : (A : U) → A → A
+ test/typecheck/cases/happy-issue-9-relfunext2-id.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - "https://github.com/rzk-lang/rzk/issues/9"
+ test/typecheck/cases/happy-issue-9-relfunext2-id.rzk view
@@ -0,0 +1,29 @@+#lang rzk-1++-- [#9](https://github.com/rzk-lang/rzk/issues/9): `relfunext2` used to expand wrongly when a later parameter shadowed the type family name.+-- The old repro ended with `(r : relfunext2) → relfunext2 := λ r → r` and failed to typecheck; with correct binding / expansion it succeeds.+-- (Use the parameter name `w` and body `w` to avoid accidental shadowing of binders inside `relfunext2`.)++#define prod (A : U) (B : U) : U+ := ∑ (x : A), B++#define isweq (A : U) (B : U) (f : A → B) : U+ := ∑ (g : B → A), prod ((x : A) → g (f x) =_{A} x) ((y : B) → f (g y) =_{B} y)++#define weq (A : U) (B : U) : U+ := ∑ (f : A → B), isweq A B f++-- [RS17, Proposition 4.8] (shape as in `rzk-playground/.../example.rzk`).+#define relfunext2 : U+ := (I : CUBE)+ → (psi : I → TOPE)+ → (phi : psi → TOPE)+ → (A : psi → U)+ → (a : (t : phi) → A t)+ → (f : (t : psi) → A t [ phi t |-> a t ])+ → (g : (t : psi) → A t [ phi t |-> a t ])+ → weq (f = g)+ ((t : psi) → (f t =_{A t} g t) [ phi t |-> refl ])++#define happyIssue9Relfunext2Id (w : relfunext2) : relfunext2+ := w
+ test/typecheck/cases/happy-modal-basics.expect.yaml view
@@ -0,0 +1,1 @@+status: ok
+ test/typecheck/cases/happy-modal-basics.rzk view
@@ -0,0 +1,65 @@+#lang rzk-1++#def sharp-pure (A : U) (x : A)+ : <| _# | A |>+ := mod _# x++#def sharp-map (A B : U) (f : A → B)+ : <| _# | A |> → <| _# | B |>+ := \ (x : _# A) → mod _# (f x)++#def b-extract (A : _b U) (x : _b A)+ : A+ := x++#def b-map (A B : _b U) (f : _b A → B)+ : <| _b | A |> → <| _b | B |>+ := \ (x : _b A) → mod _b (f x)++#def b-dup (A : _b U) (x : _b A)+ : <| _b | <| _b | A |> |>+ := mod _b (mod _b x)++#def op-map (A B : _op U) (f : _op A → B)+ : <| _op | A |> → <| _op | B |>+ := \ (x : _op A) → mod _op (f x)++#def double-op (A : U) (x : <| _op | <| _op | A |> |>)+ : A+ :=+ let mod _op x_1 := x in+ let mod _op / _op x_2 := x_1 in+ x_2++#def sharp-join (A : U) (a : <| _# | <| _# | A |> |>)+ : <| _# | A |>+ :=+ let mod _# x_1 := a in+ let mod _# / _# x_2 := x_1 in+ mod _# x_2++#def flat-to-sharp (A : _b U) (x : _b A)+ : <| _# | A |>+ := mod _# x++#def id-pure (A : U) (x : A)+ : <| _id | A |>+ := mod _id x++#def id-map (A B : U) (f : A → B)+ : <| _id | A |> → <| _id | B |>+ := \ (x : _id A) → mod _id (f x)++#def id-join (A : U) (a : <| _id | <| _id | A |> |>)+ : <| _id | A |>+ :=+ let mod _id x_1 := a in+ let mod _id / _id x_2 := x_1 in+ mod _id x_2++#def op-op-is-id (A : U) (x : <| _op | <| _op | A |> |>)+ : <| _id | A |>+ :=+ let mod _op x_1 := x in+ let mod _op / _op x_2 := x_1 in+ mod _id x_2
+ test/typecheck/cases/happy-modal-inv.expect.yaml view
@@ -0,0 +1,1 @@+status: ok
+ test/typecheck/cases/happy-modal-inv.rzk view
@@ -0,0 +1,13 @@+#lang rzk-1++-- Simplest test: phi_op should unify with the inverted tope+-- so refl typechecks if the substitution is correct++#compute-nf inv_op (0_2 === 0_2)++#def test-lt-mod-inv+ ( i : 2)+ : let mod _op q := invᵒᵖ (i ≡ 0₂) in let mod _op fi := flip_op i in <| _op | (q = (fi === 1_2)) |>+ := mod _op refl++
+ test/typecheck/cases/happy-refl-path.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - commit-ac9b6d89-refl-symmetric
+ test/typecheck/cases/happy-refl-path.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#define self-path (A : U) (x : A)+ : x =_{A} x+ := refl_{x}++#check self-path : (A : U) -> (x : A) -> x =_{A} x
+ test/typecheck/cases/happy-shott-simplicial-subcomplexes.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - shott-02-simplicial-type-theory-simplices-horns-shape-prod
+ test/typecheck/cases/happy-shott-simplicial-subcomplexes.rzk view
@@ -0,0 +1,73 @@+#lang rzk-1++-- Adapted from sHoTT `src/simplicial-hott/02-simplicial-type-theory.rzk.md` (simplices,+-- boundaries, inner horns, `shape-prod`). Uses ASCII `<=` for the directed interval.+-- Exercises `TOPE`, products, `∧` / `∨`, and dependent shape composition.++#define Δ¹+ : 2 → TOPE+ := \ t → TOP++#define Δ²+ : ( 2 × 2) → TOPE+ := \ (t , s) → s <= t++#define Δ³+ : ( 2 × 2 × 2) → TOPE+ := \ ((t1 , t2) , t3) → t3 <= t2 /\ t2 <= t1++#define ∂Δ¹+ : Δ¹ → TOPE+ := \ t → (t === 0_2 \/ t === 1_2)++#define ∂Δ²+ : Δ² → TOPE+ :=+ \ (t , s) → (s === 0_2 \/ t === 1_2 \/ s === t)++#define Λ+ : ( 2 × 2) → TOPE+ := \ (t , s) → (s === 0_2 \/ t === 1_2)++#define Λ²₁+ : Δ² → TOPE+ := \ (s , t) → Λ (s , t)++#define Λ³₁+ : Δ³ → TOPE+ := \ ((t1 , t2) , t3) → t3 === 0_2 \/ t2 === t1 \/ t1 === 1_2++#define Λ³₂+ : Δ³ → TOPE+ := \ ((t1 , t2) , t3) → t3 === 0_2 \/ t3 === t2 \/ t1 === 1_2++#define shape-prod+ ( I J : CUBE)+ ( ψ : I → TOPE)+ ( χ : J → TOPE)+ : ( I × J) → TOPE+ := \ (t , s) → ψ t /\ χ s++#define Δ¹×Δ¹+ : ( 2 × 2) → TOPE+ := shape-prod 2 2 Δ¹ Δ¹++#define ∂□+ : ( 2 × 2) → TOPE+ := \ (t , s) → ((∂Δ¹ t) /\ (Δ¹ s)) \/ ((Δ¹ t) /\ (∂Δ¹ s))++#define ∂Δ¹×Δ¹+ : ( 2 × 2) → TOPE+ := shape-prod 2 2 ∂Δ¹ Δ¹++#define Δ¹×∂Δ¹+ : ( 2 × 2) → TOPE+ := shape-prod 2 2 Δ¹ ∂Δ¹++#define Δ²×Δ¹+ : ( 2 × 2 × 2) → TOPE+ := shape-prod (2 * 2) 2 Δ² Δ¹++#define Δ³×Δ²+ : ( ( 2 × 2 × 2) × (2 × 2)) → TOPE+ := shape-prod (2 * 2 * 2) (2 * 2) Δ³ Δ²
+ test/typecheck/cases/happy-tope-high-dim-cubes.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - tope-high-dim-cubes-4d-5d-shape-prod-boundaries
+ test/typecheck/cases/happy-tope-high-dim-cubes.rzk view
@@ -0,0 +1,60 @@+#lang rzk-1++-- Directed ``2``-cube products up to dimension 5, chain-inequality "simplices" Δ⁴/Δ⁵,+-- `shape-prod` over 4D×2D and 5D×1D, simple boundary-style disjunctions on Δ⁴/Δ⁵,+-- and shape-indexed functions (exercises `TopeLEQT`, `TopeAndT`, `TopeOrT`,+-- nested pairs, and `localTope` on high-dimensional guards).++#define u : U := Unit -> Unit++#define Δ¹+ : 2 → TOPE+ := \ t → TOP++#define Δ²+ : ( 2 × 2) → TOPE+ := \ (t , s) → s <= t++#define Δ⁴+ : ( 2 × 2 × 2 × 2) → TOPE+ := \ (((t1 , t2) , t3) , t4) → t4 <= t3 /\ t3 <= t2 /\ t2 <= t1++#define Δ⁵+ : ( 2 × 2 × 2 × 2 × 2) → TOPE+ := \ ((((t1 , t2) , t3) , t4) , t5) → t5 <= t4 /\ t4 <= t3 /\ t3 <= t2 /\ t2 <= t1++#define Δ⁵-cap+ : ( 2 × 2 × 2 × 2 × 2) → TOPE+ := \ ((((t1 , t2) , t3) , t4) , t5) → (t5 <= t4 /\ t4 <= t3 /\ t3 <= t2 /\ t2 <= t1) /\ (t5 === 0_2)++#define shape-prod+ ( I J : CUBE)+ ( ψ : I → TOPE)+ ( χ : J → TOPE)+ : ( I × J) → TOPE+ := \ (t , s) → ψ t /\ χ s++#define Δ⁴×Δ²+ : ( ( 2 × 2 × 2 × 2) × (2 × 2)) → TOPE+ := shape-prod (2 * 2 * 2 * 2) (2 * 2) Δ⁴ Δ²++#define Δ⁵×Δ¹+ : ( ( 2 × 2 × 2 × 2 × 2) × 2) → TOPE+ := shape-prod (2 * 2 * 2 * 2 * 2) 2 Δ⁵ Δ¹++#define ∂Δ⁴-simple+ : Δ⁴ → TOPE+ := \ (((t1 , t2) , t3) , t4) → (t1 === 0_2 \/ t1 === 1_2) \/ (t4 === 0_2 \/ t4 === 1_2)++#define ∂Δ⁵-simple+ : Δ⁵ → TOPE+ := \ ((((t1 , t2) , t3) , t4) , t5) → (t1 === 0_2 \/ t1 === 1_2) \/ (t5 === 0_2 \/ t5 === 1_2)++#define on4 (q : 2 * 2 * 2 * 2 | Δ⁴ q) : U+ := u++#define on5 (p : 2 * 2 * 2 * 2 * 2 | Δ⁵ p) : U+ := u++#define on5cap (p : 2 * 2 * 2 * 2 * 2 | Δ⁵-cap p) : U+ := u
+ test/typecheck/cases/happy-tope-nested-rec-or-d4.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - nested-recOR-full-binary-depth-4
+ test/typecheck/cases/happy-tope-nested-rec-or-d4.rzk view
@@ -0,0 +1,13 @@+#lang rzk-1++-- Full binary nested `recOR` over 4 shaped coordinates (see `happy-tope-nested-rec-or.rzk`).++#define u : U := Unit++-- coordinate t0+-- coordinate t1+-- coordinate t2+-- coordinate t3++#define nest (t0 : 2 | (t0 === 0_2) \/ (t0 === 1_2)) (t1 : 2 | (t1 === 0_2) \/ (t1 === 1_2)) (t2 : 2 | (t2 === 0_2) \/ (t2 === 1_2)) (t3 : 2 | (t3 === 0_2) \/ (t3 === 1_2)) : U+ := recOR( t0 === 0_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ) ) ), t0 === 1_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ) ) ) )
+ test/typecheck/cases/happy-tope-nested-rec-or-d5.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - nested-recOR-full-binary-depth-5
+ test/typecheck/cases/happy-tope-nested-rec-or-d5.rzk view
@@ -0,0 +1,14 @@+#lang rzk-1++-- Full binary nested `recOR` over 5 shaped coordinates (see `happy-tope-nested-rec-or.rzk`).++#define u : U := Unit++-- coordinate t0+-- coordinate t1+-- coordinate t2+-- coordinate t3+-- coordinate t4++#define nest (t0 : 2 | (t0 === 0_2) \/ (t0 === 1_2)) (t1 : 2 | (t1 === 0_2) \/ (t1 === 1_2)) (t2 : 2 | (t2 === 0_2) \/ (t2 === 1_2)) (t3 : 2 | (t3 === 0_2) \/ (t3 === 1_2)) (t4 : 2 | (t4 === 0_2) \/ (t4 === 1_2)) : U+ := recOR( t0 === 0_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ) ) ), t0 === 1_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ) ) ) )
+ test/typecheck/cases/happy-tope-nested-rec-or-d6.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - nested-recOR-full-binary-depth-6
+ test/typecheck/cases/happy-tope-nested-rec-or-d6.rzk view
@@ -0,0 +1,15 @@+#lang rzk-1++-- Full binary nested `recOR` over 6 shaped coordinates (see `happy-tope-nested-rec-or.rzk`).++#define u : U := Unit++-- coordinate t0+-- coordinate t1+-- coordinate t2+-- coordinate t3+-- coordinate t4+-- coordinate t5++#define nest (t0 : 2 | (t0 === 0_2) \/ (t0 === 1_2)) (t1 : 2 | (t1 === 0_2) \/ (t1 === 1_2)) (t2 : 2 | (t2 === 0_2) \/ (t2 === 1_2)) (t3 : 2 | (t3 === 0_2) \/ (t3 === 1_2)) (t4 : 2 | (t4 === 0_2) \/ (t4 === 1_2)) (t5 : 2 | (t5 === 0_2) \/ (t5 === 1_2)) : U+ := recOR( t0 === 0_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ) ) ), t0 === 1_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ) ) ) )
+ test/typecheck/cases/happy-tope-nested-rec-or.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - nested-recOR-checkCoherence-cartesian
+ test/typecheck/cases/happy-tope-nested-rec-or.rzk view
@@ -0,0 +1,13 @@+#lang rzk-1++-- Nested `recOR`: each outer branch typechecks an inner `recOR` under a stronger+-- local tope (`localTope` when inferring `recOR`). When two such values unify as+-- `RecOrT`, the checker runs `checkCoherence` on a Cartesian grid of branch pairs+-- (each pair: intersect guards with `∧`, then unify branch bodies) — nesting depth+-- multiplies work sharply (see also `ill-tope-nested-rec-or-inner-singleton`).++#define u : U := Unit++#define nest2 (t1 : 2 | (t1 === 0_2) \/ (t1 === 1_2)) (t2 : 2 | (t2 === 0_2) \/ (t2 === 1_2)) : U+ := recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> u, t2 === 1_2 |-> u )+ , t1 === 1_2 |-> recOR( t2 === 0_2 |-> u, t2 === 1_2 |-> u ) )
+ test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+regression_for:+ - contextEquiv-recOR-disjunctive-shape+ - contextEntails-recBOT-under-contradiction+ - contextEntailedBy-TypeRestricted-TOP
+ test/typecheck/cases/happy-tope-rec-and-restrict.rzk view
@@ -0,0 +1,15 @@+#lang rzk-1++-- `recOR` with a disjunctive shape so `contextEquiv` matches the union of branch guards.+#define u : U := Unit -> Unit++#define happyRecOrBoundary (t : 2 | (t === 0_2) \/ (t === 1_2)) : U+ := recOR( t === 0_2 |-> u, t === 1_2 |-> u )++-- Contradictory guard: context entails `⊥`, so `recBOT` is well-typed.+#define happyRecBotContradiction (t : 2 | (t === 0_2) /\ (t === 1_2)) : U+ := recBOT++-- Trivial restriction (always `contextEntailedBy` from `TOP`).+#define happyRestrictedUnitTrivial : Unit [ TOP |-> unit ]+ := unit
+ test/typecheck/cases/happy-tope-shapes.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - entailM-solveRHSM-shape-endpoint-leq-product-diagonal
+ test/typecheck/cases/happy-tope-shapes.rzk view
@@ -0,0 +1,26 @@+#lang rzk-1++-- Well-typed examples exercising shape guards, `<=` on `2`, product cubes, and+-- `TypeRestricted` / diagonal dependency (entailment succeeds in `entailM` / `solveRHSM`).++#define u : U := Unit -> Unit++-- Applying at an endpoint satisfies the guard (`contextEntails` on substituted tope).+#define happyShapeApp (f : (t : 2 | t === 0_2) -> U) : U+ := f 0_2++-- Directed-interval guard.+#define happyLeqShape (t : 2 | 0_2 <= t) : U+ := u++-- Conjunction of inequalities (interval segment as a subshape).+#define happyLeqSegment (t : 2 | (0_2 <= t) /\ (t <= 1_2)) : U+ := u++-- Product cube: face where the first component is pinned (`TopeEQT` on pairs).+#define happyProductFace (ts : 2 * 2 | first ts === 0_2) : U+ := u++-- Dependent restriction: under `v ≡ a`, the clause `a ≡ 0₂` is consistent.+#define happyDiagonalRestrict (a : 2) : (v : 2 | a === v) -> Unit [ a === 0_2 |-> unit ]+ := \ v -> unit
+ test/typecheck/cases/ill-bare-lambda-compute.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorCannotInferBareLambda+message_contains:+ - "cannot infer the type of the argument"+regression_for:+ - cannot-infer-bare-lambda
+ test/typecheck/cases/ill-bare-lambda-compute.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#compute \ x -> x
+ test/typecheck/cases/ill-bare-refl-compute.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorCannotInferBareRefl+message_contains:+ - "cannot infer the type of term"+regression_for:+ - cannot-infer-bare-refl
+ test/typecheck/cases/ill-bare-refl-compute.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#compute refl
+ test/typecheck/cases/ill-duplicate.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorDuplicateTopLevel+message_contains:+ - "duplicate top-level definition"+regression_for:+ - matrix-duplicate-toplevel
+ test/typecheck/cases/ill-duplicate.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++#define dup+ : U+ := U++#define dup+ : U+ := U
+ test/typecheck/cases/ill-implicit.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorImplicitAssumption+message_contains:+ - "implicit assumption"+regression_for:+ - docs-en-reference-sections+ - matrix-implicit-assumption
+ test/typecheck/cases/ill-implicit.rzk view
@@ -0,0 +1,11 @@+#lang rzk-1++#variables A B C : U++#variable g : B → C+#variable f : A → B+#variable x : A++#define bad-compose+ : C+ := g (f x)
+ test/typecheck/cases/ill-invalid-arg-type-bot.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorInvalidArgumentType+message_contains:+ - "invalid function parameter type"+regression_for:+ - invalid-argument-type-bottom
+ test/typecheck/cases/ill-invalid-arg-type-bot.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#define bad (x : BOT) : U := U
+ test/typecheck/cases/ill-issue-13-flip-flip-wrong.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnifyTerms+message_contains:+ - "cannot unify"+regression_for:+ - "https://github.com/rzk-lang/rzk/issues/13"
+ test/typecheck/cases/ill-issue-13-flip-flip-wrong.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++-- [#13](https://github.com/rzk-lang/rzk/issues/13): the stated path type used the wrong `flip` instantiation (`flip A B (flip A B f)` instead of `flip B A (flip A B f)`).++#define _flip (A : U) (B : U) (f : (x : A) → (y : B) → A) : (y : B) → (x : A) → A+ := \ y → \ x → f x y++#define illIssue13FlipFlipWrong (A : U) (B : U) (f : (x : A) → (y : B) → A)+ : _flip A B (_flip A B f) =_{(x : A) → (y : B) → A} f+ := \ _ → refl
+ test/typecheck/cases/ill-issue-206-families-of-extension.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorUnifyTerms+message_contains:+ - "cannot unify"+regression_for:+ - "https://github.com/rzk-lang/rzk/issues/206"+ - "https://github.com/rzk-lang/rzk/pull/207"
+ test/typecheck/cases/ill-issue-206-families-of-extension.rzk view
@@ -0,0 +1,12 @@+#lang rzk-1++-- Regression: [#206](https://github.com/rzk-lang/rzk/issues/206) / [#207](https://github.com/rzk-lang/rzk/pull/207).+-- `families-of A` is `A → U`. Equating it to `families-of (A [ t ≡ 1₂ ↦ x ])` used to succeed via the+-- buggy `App` subtyping path fixed in #207. Minimal `bad` example from+-- [issue #206 (comment)](https://github.com/rzk-lang/rzk/issues/206#issuecomment-3482693809).++#define families-of (A : U) : U+ := A → U++#define illBadFamiliesOf (A : U) (x : A) : (t : 2) → families-of A =_{U} families-of (A [ t === 1_2 |-> x ])+ := \ _ → refl
+ test/typecheck/cases/ill-issue-33-restriction-coherence.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorUnifyTerms+message_contains:+ - "cannot unify"+ - "coherence"+regression_for:+ - "https://github.com/rzk-lang/rzk/issues/33"
+ test/typecheck/cases/ill-issue-33-restriction-coherence.rzk view
@@ -0,0 +1,15 @@+#lang rzk-1++-- [#33](https://github.com/rzk-lang/rzk/issues/33): a restricted codomain needs coherence where two+-- restriction faces overlap (`first ts ≡ 0₂` meets `first ts ≡ second ts` at `(0₂, 0₂)`).++#postulate A : U++#postulate x : A++#postulate y : A++#postulate z : A++#postulate illIssue33Restriction : (ts : 2 * 2) → A+ [ first ts === 0_2 |-> x , first ts === second ts |-> z ]
+ test/typecheck/cases/ill-modal-b-no-dist.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+ - "variable is not accessible"
+ test/typecheck/cases/ill-modal-b-no-dist.rzk view
@@ -0,0 +1,11 @@+#lang rzk-1+++#def b-extract (A : _b U) (x : _b A)+ : A+ := x++#def ill-b-typed (A B : U) (f : A → <| _b | B |>)+ : <| _b | A → B |>+ :=+ mod _b (\ (x : A) → b-extract B (f x))
+ test/typecheck/cases/ill-modal-not-modal.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorNotModal+message_contains:+ - "expected modal type"
+ test/typecheck/cases/ill-modal-not-modal.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1+++#def not-modal-let-mod (A : U) (x : A)+ : A+ :=+ let mod _# y := x in+ y
+ test/typecheck/cases/ill-modal-op-unaccessible.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+ - "variable is not accessible"
+ test/typecheck/cases/ill-modal-op-unaccessible.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#def bad-use-under-op (A : U) (x : A)+ : <| _op | A |>+ := mod _op x
+ test/typecheck/cases/ill-modal-unaccessible.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+ - "variable is not accessible"
+ test/typecheck/cases/ill-modal-unaccessible.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#def bad-use-under-flat (A : U) (x : A)+ : <| _b | A |>+ := mod _b x
+ test/typecheck/cases/ill-not-function.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorNotFunction+message_contains:+ - "expected a function"+regression_for:+ - matrix-not-function
+ test/typecheck/cases/ill-not-function.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check U U : U
+ test/typecheck/cases/ill-not-pair-first-unit.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorNotPair+message_contains:+ - "cube product or dependent pair"+regression_for:+ - First-not-pair
+ test/typecheck/cases/ill-not-pair-first-unit.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check first unit : U
+ test/typecheck/cases/ill-not-pair-second-unit.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorNotPair+message_contains:+ - "cube product or dependent pair"+regression_for:+ - Second-not-pair
+ test/typecheck/cases/ill-not-pair-second-unit.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check second unit : U
+ test/typecheck/cases/ill-param-untyped-pattern.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "untyped pattern in parameters"+regression_for:+ - param-untyped-pattern
+ test/typecheck/cases/ill-param-untyped-pattern.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#define f x : U := U
+ test/typecheck/cases/ill-rec-or-overlap-incoherent.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnifyTerms+message_contains:+ - "coherence"+regression_for:+ - checkCoherence-recOR-overlapping-guards
+ test/typecheck/cases/ill-rec-or-overlap-incoherent.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++-- Overlapping branch guards: `checkCoherence` runs under `t ≡ 0₂ ∧ t ≡ 0₂` and+-- requires the two branch payloads to unify (`checkCoherence` on overlapping guards).++#define u : U := Unit -> Unit++#define overlapIncoherent (t : 2 | t === 0_2) : U+ := recOR( t === 0_2 |-> Unit, t === 0_2 |-> u )
+ test/typecheck/cases/ill-render-latex-define.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "latex"+ - "not yet supported"+regression_for:+ - render-latex-unsupported
+ test/typecheck/cases/ill-render-latex-define.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "render" = "latex"++#define x : U := U
+ test/typecheck/cases/ill-section-end-mismatch.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "unexpected #end"+ - "expecting #end"+regression_for:+ - section-end-mismatch
+ test/typecheck/cases/ill-section-end-mismatch.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#section a++#end b
+ test/typecheck/cases/ill-section-not-closed.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "not closed with an #end"+regression_for:+ - section-not-closed
+ test/typecheck/cases/ill-section-not-closed.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#section foo++#define x : U := U
+ test/typecheck/cases/ill-section-unexpected-end.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "unexpected #end"+ - "no section was declared"+regression_for:+ - section-unexpected-end
+ test/typecheck/cases/ill-section-unexpected-end.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#end foo
+ test/typecheck/cases/ill-set-option-render.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "unknown render backend"+regression_for:+ - set-option-render
+ test/typecheck/cases/ill-set-option-render.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#set-option "render" = "gif"
+ test/typecheck/cases/ill-set-option-unknown.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "unknown option"+regression_for:+ - set-option-unknown
+ test/typecheck/cases/ill-set-option-unknown.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#set-option "frobnitz" = "1"
+ test/typecheck/cases/ill-set-option-verbosity.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "unknown verbosity level"+regression_for:+ - issueTypeError-setOption-verbosity
+ test/typecheck/cases/ill-set-option-verbosity.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "verbosity" = "loud"++#define x : U := U
+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnifyTerms+message_contains:+ - "cannot unify"+regression_for:+ - nested-recOR-bad-leaf-all-ones-corner
+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk view
@@ -0,0 +1,16 @@+#lang rzk-1++-- Ill counterpart to `happy-tope-nested-rec-or-d4.rzk`: **identical** nested binary `recOR`+-- except the **rightmost leaf** along the all-`1₂` corner (`t0 ≡ 1₂`, …, `t3 ≡ 1₂`),+-- where `u` is replaced by `unit`, so the branch infers `Unit` instead of `U` and+-- `recOR` inference fails only after processing the full tree (see error at innermost branch).++#define u : U := Unit++-- coordinate t0+-- coordinate t1+-- coordinate t2+-- coordinate t3++#define ill (t0 : 2 | (t0 === 0_2) \/ (t0 === 1_2)) (t1 : 2 | (t1 === 0_2) \/ (t1 === 1_2)) (t2 : 2 | (t2 === 0_2) \/ (t2 === 1_2)) (t3 : 2 | (t3 === 0_2) \/ (t3 === 1_2)) : U+ := recOR( t0 === 0_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ) ) ), t0 === 1_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> u ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> u, t3 === 1_2 |-> unit ) ) ) )
+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnifyTerms+message_contains:+ - "cannot unify"+regression_for:+ - nested-recOR-bad-leaf-all-ones-corner
+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk view
@@ -0,0 +1,17 @@+#lang rzk-1++-- Ill counterpart to `happy-tope-nested-rec-or-d5.rzk`: **identical** nested binary `recOR`+-- except the **rightmost leaf** along the all-`1₂` corner (`t0 ≡ 1₂`, …, `t4 ≡ 1₂`),+-- where `u` is replaced by `unit`, so the branch infers `Unit` instead of `U` and+-- `recOR` inference fails only after processing the full tree (see error at innermost branch).++#define u : U := Unit++-- coordinate t0+-- coordinate t1+-- coordinate t2+-- coordinate t3+-- coordinate t4++#define ill (t0 : 2 | (t0 === 0_2) \/ (t0 === 1_2)) (t1 : 2 | (t1 === 0_2) \/ (t1 === 1_2)) (t2 : 2 | (t2 === 0_2) \/ (t2 === 1_2)) (t3 : 2 | (t3 === 0_2) \/ (t3 === 1_2)) (t4 : 2 | (t4 === 0_2) \/ (t4 === 1_2)) : U+ := recOR( t0 === 0_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ) ) ), t0 === 1_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> u ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> u, t4 === 1_2 |-> unit ) ) ) ) )
+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnifyTerms+message_contains:+ - "cannot unify"+regression_for:+ - nested-recOR-bad-leaf-all-ones-corner
+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk view
@@ -0,0 +1,18 @@+#lang rzk-1++-- Ill counterpart to `happy-tope-nested-rec-or-d6.rzk`: **identical** nested binary `recOR`+-- except the **rightmost leaf** along the all-`1₂` corner (`t0 ≡ 1₂`, …, `t5 ≡ 1₂`),+-- where `u` is replaced by `unit`, so the branch infers `Unit` instead of `U` and+-- `recOR` inference fails only after processing the full tree (see error at innermost branch).++#define u : U := Unit++-- coordinate t0+-- coordinate t1+-- coordinate t2+-- coordinate t3+-- coordinate t4+-- coordinate t5++#define ill (t0 : 2 | (t0 === 0_2) \/ (t0 === 1_2)) (t1 : 2 | (t1 === 0_2) \/ (t1 === 1_2)) (t2 : 2 | (t2 === 0_2) \/ (t2 === 1_2)) (t3 : 2 | (t3 === 0_2) \/ (t3 === 1_2)) (t4 : 2 | (t4 === 0_2) \/ (t4 === 1_2)) (t5 : 2 | (t5 === 0_2) \/ (t5 === 1_2)) : U+ := recOR( t0 === 0_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ) ) ), t0 === 1_2 |-> recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ) ), t1 === 1_2 |-> recOR( t2 === 0_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ) ), t2 === 1_2 |-> recOR( t3 === 0_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ) ), t3 === 1_2 |-> recOR( t4 === 0_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> u ), t4 === 1_2 |-> recOR( t5 === 0_2 |-> u, t5 === 1_2 |-> unit ) ) ) ) ) )
+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "equivalent to the union"+regression_for:+ - nested-recOR-contextEquiv-inner-singleton
+ test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++-- Inner `recOR` on `t2` must cover both endpoints while `t2 ≡ 0 ∨ t2 ≡ 1` holds.+-- A singleton inner `recOR` leaves `contextEquiv` unsatisfied on the `t1 ≡ 0₂` face.++#define u : U := Unit++#define illNestedRecOrSingleton (t1 : 2 | (t1 === 0_2) \/ (t1 === 1_2)) (t2 : 2 | (t2 === 0_2) \/ (t2 === 1_2)) : U+ := recOR( t1 === 0_2 |-> recOR( t2 === 0_2 |-> u )+ , t1 === 1_2 |-> recOR( t2 === 0_2 |-> u, t2 === 1_2 |-> u ) )
+ test/typecheck/cases/ill-tope-not-satisfied-app-shape.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "is included in (entails) the tope"+regression_for:+ - contextEntails-app-substituted-tope
+ test/typecheck/cases/ill-tope-not-satisfied-app-shape.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- Applying a function typed on a strict shape requires the corresponding tope in the+-- local context (`contextEntails` on the guard after substituting the argument).++#define app (f : (t : 2 | t === 0_2) -> U) (x : 2) : U+ := f x
+ test/typecheck/cases/ill-tope-not-satisfied-rec-bot.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "local context"+ - "entails"+regression_for:+ - contextEntailedBy-recBOT-under-contradiction
+ test/typecheck/cases/ill-tope-not-satisfied-rec-bot.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check recBOT : U
+ test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "equivalent to the union"+ - "recOR"+regression_for:+ - contextEquiv-recOR-boundary
+ test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- After the branches of `recOR`, the checker requires the local tope context to be+-- equivalent to the disjunction of branch guard topes (`contextEquiv`).+-- With only `⊤` on `t : 2`, the boundary `t ≡ 0 ∨ t ≡ 1` is not entailed.++#define boundaryUnit (t : 2) : U+ := recOR( t === 0_2 |-> unit, t === 1_2 |-> unit )
+ test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "equivalent to the union"+regression_for:+ - contextEquiv-recOR-singleton
+ test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++-- Single-branch `recOR` on unrestricted `t : 2`: `contextEquiv` requires `⊤` to match+-- `t ≡ 0₂ ∨ ⊥` (`contextEquiv` after `recOR`).++#define u : U := Unit -> Unit++#define openSingleton (t : 2) : U+ := recOR( t === 0_2 |-> u )
+ test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "unifying"+ - "does not entail"+regression_for:+ - tope-family-subtyping-without-local-Phi
+ test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++-- Subtyping for `(t : …) → TOPE` compares normalised shape topes without extending the+-- local tope context Φ. A family defined on the full interval does not satisfy a+-- stricter shape here, even if the body ignores `t`.++#define wide : (t : 2) -> TOPE+ := \ t -> TOP++#check wide : (t : 2 | t === 0_2) -> TOPE
+ test/typecheck/cases/ill-tope-param-lambda.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "tope params are illegal"+regression_for:+ - lambda-TOPE-param-forbidden
+ test/typecheck/cases/ill-tope-param-lambda.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#define bad : (p : TOPE) -> U := \ p -> U
+ test/typecheck/cases/ill-tope-param-typefun.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "tope params are illegal"+regression_for:+ - TypeFun-TOPE-domain-forbidden
+ test/typecheck/cases/ill-tope-param-typefun.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#define bad (phi : TOPE) : U := U
+ test/typecheck/cases/ill-tope-subtle-app-shape-5d.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "is included in (entails) the tope"+ - "Δ⁵"+regression_for:+ - contextEntails-app-5d-simplex
+ test/typecheck/cases/ill-tope-subtle-app-shape-5d.rzk view
@@ -0,0 +1,17 @@+#lang rzk-1++-- Applying a `Δ⁵`-guarded function on the full 5-cube: after application, `contextEntails`+-- must derive the substituted simplex guard from the local tope context (fails here).+-- Same judgment as `ill-tope-not-satisfied-app-shape`, higher dimension.++#define u : U := Unit -> Unit++#define Δ⁵+ : ( 2 × 2 × 2 × 2 × 2) → TOPE+ := \ ((((t1 , t2) , t3) , t4) , t5) → t5 <= t4 /\ t4 <= t3 /\ t3 <= t2 /\ t2 <= t1++#define fΔ⁵ : (p : 2 * 2 * 2 * 2 * 2 | Δ⁵ p) -> U+ := \ p → u++#define illAppΔ⁵ : (p : 2 * 2 * 2 * 2 * 2) -> U+ := \ p → fΔ⁵ p
+ test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "equivalent to the union"+regression_for:+ - contextEquiv-recOR-high-dim
+ test/typecheck/cases/ill-tope-subtle-rec-or-5d-boundary.rzk view
@@ -0,0 +1,11 @@+#lang rzk-1++-- `recOR` requires the local tope context to match the disjunction of branch guards+-- (`contextEquiv`: local Φ must be equivalent to the disjunction of branch guards).+-- On the full 5-cube only `⊤` holds, so+-- pinning the *first* coordinate to `0₂` or `1₂` is not entailed (interior points).++#define u : U := Unit -> Unit++#define illRecOr5dBoundary : ( 2 * 2 * 2 * 2 * 2) -> U+ := \ ((((t1 , t2) , t3) , t4) , t5) → recOR( t1 === 0_2 |-> u, t1 === 1_2 |-> u )
+ test/typecheck/cases/ill-tope-subtle-tope-family-4d.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "unifying"+ - "does not entail"+regression_for:+ - tope-family-4d-without-local-Phi
+ test/typecheck/cases/ill-tope-subtle-tope-family-4d.rzk view
@@ -0,0 +1,14 @@+#lang rzk-1++-- Same pattern as `ill-tope-not-satisfied-tope-family-subtyping`, but the domain is+-- the 4-cube with the directed 4-simplex `Δ⁴`. Unification checks `entailM` **without**+-- extending local Φ, so a constant `TOPE` family is rejected.++#define Δ⁴+ : ( 2 × 2 × 2 × 2) → TOPE+ := \ (((t1 , t2) , t3) , t4) → t4 <= t3 /\ t3 <= t2 /\ t2 <= t1++#define wide4 : (p : 2 * 2 * 2 * 2) -> TOPE+ := \ p → TOP++#check wide4 : (p : 2 * 2 * 2 * 2 | Δ⁴ p) -> TOPE
+ test/typecheck/cases/ill-tope-subtle-tope-family-5d.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "unifying"+ - "does not entail"+ - "π₁"+regression_for:+ - tope-family-5d-without-local-Phi
+ test/typecheck/cases/ill-tope-subtle-tope-family-5d.rzk view
@@ -0,0 +1,14 @@+#lang rzk-1++-- 5-cube + `Δ⁵`: the solver normalises the chain to a large conjunction of inequalities+-- and generated `≤`/`∨` lemmas on nested `π₁`/`π₂` projections (`generateTopesForPointsM`+-- in `solveRHSM`). Still `⊤` does not `entailM` that formula without `Δ⁵` in Φ.++#define Δ⁵+ : ( 2 × 2 × 2 × 2 × 2) → TOPE+ := \ ((((t1 , t2) , t3) , t4) , t5) → t5 <= t4 /\ t4 <= t3 /\ t3 <= t2 /\ t2 <= t1++#define wide5 : (p : 2 * 2 * 2 * 2 * 2) -> TOPE+ := \ p → TOP++#check wide5 : (p : 2 * 2 * 2 * 2 * 2 | Δ⁵ p) -> TOPE
+ test/typecheck/cases/ill-undefined.expect.yaml view
@@ -0,0 +1,5 @@+status: error+error_tag: TypeErrorUndefined+message_contains:+ - "undefined variable"+ - "notARealName"
+ test/typecheck/cases/ill-undefined.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check notARealName : U
+ test/typecheck/cases/ill-unexpected-lambda.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnexpectedLambda+message_contains:+ - "unexpected lambda"+regression_for:+ - unexpected-lambda-in-check
+ test/typecheck/cases/ill-unexpected-lambda.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check (\ x -> x) : U
+ test/typecheck/cases/ill-unexpected-pair.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnexpectedPair+message_contains:+ - "unexpected pair"+regression_for:+ - unexpected-pair-in-check
+ test/typecheck/cases/ill-unexpected-pair.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check (unit, unit) : U
+ test/typecheck/cases/ill-unexpected-refl.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnexpectedRefl+message_contains:+ - "unexpected refl"+regression_for:+ - unexpected-refl-in-check
+ test/typecheck/cases/ill-unexpected-refl.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check refl_{unit} : U
+ test/typecheck/cases/ill-unify-terms-path.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnifyTerms+message_contains:+ - "cannot unify term"+regression_for:+ - unify-terms-path
+ test/typecheck/cases/ill-unify-terms-path.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++#postulate A : U++#postulate a : A++#postulate b : A++#check refl_{a} : b =_{A} a
+ test/typecheck/cases/ill-unify.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnify+message_contains:+ - "cannot unify"+regression_for:+ - matrix-unification
+ test/typecheck/cases/ill-unify.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#define unit-type+ : U+ := Unit++#check U : unit-type
+ test/typecheck/cases/ill-unset-option-unknown.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "unknown option"+regression_for:+ - unset-option-unknown
+ test/typecheck/cases/ill-unset-option-unknown.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#unset-option "frobnitz"
+ test/typecheck/cases/ill-unused-assumption.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorUnusedVariable+message_contains:+ - "unused variable"+regression_for:+ - pr-179+ - matrix-unused-variable
+ test/typecheck/cases/ill-unused-assumption.rzk view
@@ -0,0 +1,13 @@+#lang rzk-1++#section sec-unused++#variables A : U++#variable unused-var : A++#define only-type+ : U+ := A++#end sec-unused
+ test/typecheck/cases/literate-fence/doc.rzk.md view
@@ -0,0 +1,11 @@+# Title++```rzk+#lang rzk-1++#define from-md+ : U+ := Unit++#check from-md : U+```
+ test/typecheck/cases/literate-fence/expect.yaml view
@@ -0,0 +1,5 @@+status: ok+modules:+ - doc.rzk.md+regression_for:+ - parse-markdown-fence
+ test/typecheck/cases/multimodule-first-error/bad.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check no-such : U
+ test/typecheck/cases/multimodule-first-error/expect.yaml view
@@ -0,0 +1,10 @@+status: error+error_tag: TypeErrorUndefined+message_contains:+ - "undefined variable"+ - "no-such"+modules:+ - lib.rzk+ - bad.rzk+regression_for:+ - pr-167-multifile-order
+ test/typecheck/cases/multimodule-first-error/lib.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#define ok-def+ : U+ := U
+ test/typecheck/cases/multimodule-two-ok/expect.yaml view
@@ -0,0 +1,7 @@+status: ok+modules:+ - lib.rzk+ - user.rzk+regression_for:+ - matrix-multimodule+ - pr-115-modules-order
+ test/typecheck/cases/multimodule-two-ok/lib.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++#define exported-type+ : U+ := Unit++#define exported-id (A : U)+ : A → A+ := \ x → x
+ test/typecheck/cases/multimodule-two-ok/user.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#check exported-id exported-type : exported-type → exported-type